C++ 在C+中同时使用IFileDialog和SHBrowseForFolder+;
从昨天早上开始我就有一个问题,现在快把我逼疯了 问题是我想创建一个对话框来浏览文件夹。 对于每一个比Vista旧的操作系统,我都使用SHBrowseForFolder()方法,该方法运行良好(同样适用于Vista和更高版本) 对于Vista和更新版本,由于性能、更好的GUI等原因,我希望使用IFileDialog 当我尝试编译IFileDialog的实现代码时,出现以下“No GUID”错误: 代码: 错误:C++ 在C+中同时使用IFileDialog和SHBrowseForFolder+;,c++,com,dialog,guid,folderbrowserdialog,C++,Com,Dialog,Guid,Folderbrowserdialog,从昨天早上开始我就有一个问题,现在快把我逼疯了 问题是我想创建一个对话框来浏览文件夹。 对于每一个比Vista旧的操作系统,我都使用SHBrowseForFolder()方法,该方法运行良好(同样适用于Vista和更高版本) 对于Vista和更新版本,由于性能、更好的GUI等原因,我希望使用IFileDialog 当我尝试编译IFileDialog的实现代码时,出现以下“No GUID”错误: 代码: 错误: error C2787: 'IFileDialog' : no GUID has be
error C2787: 'IFileDialog' : no GUID has been associated with this object
在与老板的谈话中,他告诉我,由于XP的兼容性,我们不能将编译器标志设置为vista及以上。通过设置编译器标志解决了此问题:
是否可以使用IFileDialog?也许这个类可以动态链接
你能给我一些关于如何实施的建议吗?
提前感谢。您需要使用uu uuidof(…)来创建此对象:
IFileDialog *pFileDialog;
hr = CoCreateInstance(__uuidof(FileDialog), NULL, CLSCTX_ALL,
__uuidof(pFileDialog), reinterpret_cast<void**>(&pFileDialog));
IFileDialog*pFileDialog;
hr=CoCreateInstance(uuuuidof(FileDialog),NULL,CLSCTX_uall,
__uuidof(pFileDialog),重新解释铸造(&pFileDialog));
您需要使用u_uidof(…)来创建此对象:
IFileDialog *pFileDialog;
hr = CoCreateInstance(__uuidof(FileDialog), NULL, CLSCTX_ALL,
__uuidof(pFileDialog), reinterpret_cast<void**>(&pFileDialog));
IFileDialog*pFileDialog;
hr=CoCreateInstance(uuuuidof(FileDialog),NULL,CLSCTX_uall,
__uuidof(pFileDialog),重新解释铸造(&pFileDialog));
如果要编译使用更高SDK(XP后)的代码,需要设置相应的WINVER
在整个项目中这样做是行不通的,但是在这个模块中这样做应该比XP更适合运行Windows操作系统
只要您不使用XP中不可用的函数,将其中一个模块的WINVER设置为高于XP的版本应该不会有问题。如果您希望编译使用更高SDK(XP后)的代码,则需要设置相应的WINVER 在整个项目中这样做是行不通的,但是在这个模块中这样做应该比XP更适合运行Windows操作系统
为其中一个模块将WINVER设置为高于XP的版本应该不会有问题,只要您不使用XP中不可用的功能。谢谢您的回答,但该代码给了我相同的错误:(谢谢您的回答,但该代码给了我相同的错误:(您能告诉我在哪里设置WINVER和使用哪种代码吗?谢谢。您能告诉我在哪里设置WINVER和使用哪种代码吗?谢谢。