【发布时间】:2011-11-25 13:15:58
【问题描述】:
我正在尝试使用 IFileDialog 来选择一个文件夹,下面的代码就可以了。问题是我想在浏览时查看某些文件类型和文件夹(例如 *.txt)。有没有简单的方法来做到这一点?
//g_path is a global which will contain the selected folders path
void PickContainer()
{
IFileDialog *pfd;
if (SUCCEEDED(CoCreateInstance(CLSID_FileOpenDialog, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pfd))))
{
DWORD dwOptions;
if (SUCCEEDED(pfd->GetOptions(&dwOptions)))
{
pfd->SetOptions(dwOptions | FOS_PICKFOLDERS);
}
if (SUCCEEDED(pfd->Show(NULL)))
{
IShellItem *psi;
if (SUCCEEDED(pfd->GetResult(&psi)))
{
if(!SUCCEEDED(psi->GetDisplayName(SIGDN_DESKTOPABSOLUTEPARSING, &g_path)))
{
MessageBox(NULL, "GetIDListName() failed", NULL, NULL);
}
psi->Release();
}
}
pfd->Release();
}
}
【问题讨论】:
-
请注意,如果您使用上面的代码,当您完成
g_path中包含的路径后,应该使用CoTaskMemFree()释放它。详情请见IShellItem::GetDisplayName()。 -
非常感谢您的sn-p!虽然这不是我的问题,但 sn-p 对我来说也完美无缺。
标签: winapi