c – 允许IFileOpenDialog选择尚未创建的文件
作者:互联网
我在许多应用程序中都看到了这一点您可以选择打开文件,如果该文件不存在,则会创建该文件并且您不会抱怨.全部来自同一个“打开文件”对话框
我使用IFileOpenDialog打开一个文件,如果我输入一个不存在的文件,它会显示一个错误,我无法获取该文件的路径.
我想要的不是获取错误,而是接受不存在的文件名.后来我会创建它.这可能吗?
if (SUCCEEDED(hr))
{
IFileOpenDialog *pFileOpen;
// Create the FileOpenDialog object
hr = CoCreateInstance(
CLSID_FileOpenDialog,
NULL,
CLSCTX_ALL,
IID_IFileOpenDialog,
reinterpret_cast<void**>(&pFileOpen)
);
if (SUCCEEDED(hr))
{
// Show the Open dialog box.
hr = pFileOpen->Show(NULL);
// Get the file name from the dialog box.
if (SUCCEEDED(hr))
{
IShellItem *pItem;
hr = pFileOpen->GetResult(&pItem);
if (SUCCEEDED(hr))
{
PWSTR pszFilePath;
hr = pItem->GetDisplayName(SIGDN_FILESYSPATH, &pszFilePath);
// Check if file actually exists
if (SUCCEEDED(hr))
{
// Create file if not found
if (PathFileExists(pszFilePath) != 1)
{
}
CoTaskMemFree(pszFilePath);
}
pItem->Release();
}
}
pFileOpen->Release();
}
CoUninitialize();
}
解决方法:
调用IFileDialog :: GetOptions获取默认选项,删除FOS_PATHMUSTEXIST和FOS_FILEMUSTEXIST位,然后使用IFileDialog :: SetOptions设置新选项.
标签:openfiledialog,c,winapi 来源: https://codeday.me/bug/20190727/1550428.html