自昨天早上以来,我遇到了一个问题,这现在使我发疯。
问题是我想创建一个对话框来浏览文件夹。
对于Vista之前的每个操作系统,我都使用SHBrowseForFolder()方法,该方法运行良好(也适用于Vista和更新版本)。
对于Vista和更高版本,由于性能,更好的GUI等原因,我想使用IFileDialog。
当我尝试为IFileDialog编译实现的代码时,出现以下“ No GUID”错误:
码:
IFileDialog *pfd = NULL;
HRESULT hr = CoCreateInstance(CLSID_FileOpenDialog, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pfd));
错误:
error C2787: 'IFileDialog' : no GUID has been associated with this object
在与老板的对话中,他告诉我,由于与XP兼容,我们无法将编译器标志设置为vista及更高版本。通过设置编译器标志可以解决此问题:How do I use iFileDialog in a VC++ 2010 project converted from VC++ 6.0?
是否可以使用IFileDialog?也许该类可以动态链接?
您能给我一些实施建议吗?
提前致谢。
最佳答案
您需要使用__uuidof(...)来创建此对象:
IFileDialog *pFileDialog;
hr = CoCreateInstance(__uuidof(FileDialog), NULL, CLSCTX_ALL,
__uuidof(pFileDialog), reinterpret_cast<void**>(&pFileDialog));