本文整理汇总了C++中IFileDialog::SetDefaultExtension方法的典型用法代码示例。如果您正苦于以下问题:C++ IFileDialog::SetDefaultExtension方法的具体用法?C++ IFileDialog::SetDefaultExtension怎么用?C++ IFileDialog::SetDefaultExtension使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IFileDialog
的用法示例。
在下文中一共展示了IFileDialog::SetDefaultExtension方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: load_file
/*
ANT_CANVAS::LOAD_FILE()
-----------------------
*/
long long ANT_canvas::load_file(void)
{
long long lines;
IFileDialog *pfd = NULL;
IShellItem *psiResult;
DWORD dwFlags;
PWSTR pszFilePath = NULL;
char chosen_filter[1024];
char chosen_filename[MAX_PATH];
OPENFILENAME parameters;
/*
Create the Open Dialg object IFileDialog
*/
if ((CoCreateInstance(CLSID_FileOpenDialog, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pfd)) == S_OK))
{
/*
we're on VISTA / Windows 7 or later
*/
const COMDLG_FILTERSPEC c_rgSaveTypes[] =
{
{L"C/C++ files", L"*.c;*.cxx;*.cpp;*.h;*.hpp.*.hxx;*.mak;makefile"},
{L"All Documents (*.*)", L"*.*"}
};
pfd->GetOptions(&dwFlags);
pfd->SetOptions(dwFlags | FOS_FORCEFILESYSTEM); // we want to see a file
pfd->SetFileTypes(ARRAYSIZE(c_rgSaveTypes), c_rgSaveTypes);
pfd->SetFileTypeIndex(1); // first item in the list is the default
pfd->SetDefaultExtension(L"doc;docx");
if (pfd->Show(NULL) == S_OK)
{
if (pfd->GetResult(&psiResult) == S_OK) // get the result object if the user clicks "Open"
{
psiResult->GetDisplayName(SIGDN_FILESYSPATH, &pszFilePath);
lines = file->read_file((char *)pszFilePath);
CoTaskMemFree(pszFilePath);
psiResult->Release();
}
}
pfd->Release();
return lines;
}
else
{
/*
we're on something prior to VISTA (NT through to XP) so use the old-style common control
*/
memset(chosen_filename, 0, sizeof(chosen_filename));
parameters.lStructSize = sizeof(parameters);
parameters.hwndOwner = window;
parameters.hInstance = hInstance;
parameters.lpstrFilter = L"C/C++ files\0*.c;*.cxx;*.cpp;*.h;*.hpp.*.hxx\0\0\0";
parameters.lpstrCustomFilter = (LPWSTR)chosen_filter;
parameters.nMaxCustFilter = sizeof(chosen_filter) - 1;
parameters.nFilterIndex = 1;
parameters.lpstrFile = (LPWSTR)chosen_filename;
parameters.nMaxFile = sizeof(chosen_filename) - 1;
parameters.lpstrFileTitle = NULL;
parameters.nMaxFileTitle = 0;
parameters.lpstrInitialDir = NULL;
parameters.lpstrTitle = L"Open...";
parameters.Flags = OFN_LONGNAMES;
parameters.nFileOffset = 0;
parameters.nFileExtension = 0;
parameters.lpstrDefExt = NULL;
parameters.lCustData = 0;
parameters.lpfnHook = NULL;
parameters.lpTemplateName = 0;
#if (_WIN32_WINNT >= 0x0500)
parameters.pvReserved = NULL;
parameters.dwReserved = 0;
parameters.FlagsEx = 0;
#endif
if ((GetOpenFileNameW(¶meters)) != 0)
return file->read_file((char *)parameters.lpstrFile);
}
return 0;
}
示例2: BasicFileOpen
HRESULT BasicFileOpen(PWSTR* filePath)
{
// CoCreate the File Open Dialog object.
IFileDialog *pfd = NULL;
HRESULT hr = CoCreateInstance(CLSID_FileOpenDialog,
NULL,
CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&pfd));
if (SUCCEEDED(hr))
{
// Create an event handling object, and hook it up to the dialog.
IFileDialogEvents *pfde = NULL;
//DWORD dwCookie;
// Set the options on the dialog.
DWORD dwFlags;
// Before setting, always get the options first in order
// not to override existing options.
hr = pfd->GetOptions(&dwFlags);
if (SUCCEEDED(hr))
{
// In this case, get shell items only for file system items.
hr = pfd->SetOptions(dwFlags | FOS_FORCEFILESYSTEM);
if (SUCCEEDED(hr))
{
static const COMDLG_FILTERSPEC c_rgSaveTypes[] =
{
{L"Executable Files(*.exe)", L"*.exe"},
};
// Set the file types to display only.
// Notice that this is a 1-based array.
hr = pfd->SetFileTypes(ARRAYSIZE(c_rgSaveTypes), c_rgSaveTypes);
if (SUCCEEDED(hr))
{
// Set the selected file type index to Word Docs for this example.
hr = pfd->SetFileTypeIndex(1);
if (SUCCEEDED(hr))
{
// Set the default extension to be ".doc" file.
hr = pfd->SetDefaultExtension(L"exe");
if (SUCCEEDED(hr))
{
// Show the dialog
hr = pfd->Show(g_hwnd);
if (SUCCEEDED(hr))
{
// Obtain the result once the user clicks
// the 'Open' button.
// The result is an IShellItem object.
IShellItem *psiResult;
hr = pfd->GetResult(&psiResult);
if (SUCCEEDED(hr))
{
// We are just going to print out the
// name of the file for sample sake.
PWSTR pszFilePath = NULL;
hr = psiResult->GetDisplayName(SIGDN_FILESYSPATH,
&pszFilePath);
if (SUCCEEDED(hr))
{
*filePath=pszFilePath;
}
psiResult->Release();
}
}
}
}
}
}
}
pfd->Release();
}
else
{
hr=E_OUTOFMEMORY;
OPENFILENAME ofn;
LPWSTR pszFile=(LPWSTR)CoTaskMemAlloc(260*2);
if(pszFile!=NULL)
{
memset1(&ofn,0,sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = g_hwnd;
ofn.lpstrFile = pszFile;
// Set lpstrFile[0] to '\0' so that GetOpenFileName does not
// use the contents of szFile to initialize itself.
ofn.lpstrFile[0] = L'\0';
ofn.nMaxFile = 260;
ofn.lpstrFilter = L"Executable Files(*.exe)\0*.exe\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
if (GetOpenFileName(&ofn)==TRUE)
{
*filePath=pszFile;
hr=0;
}
//.........这里部分代码省略.........