Joe*_*der 6 windows com winapi visual-c++ visual-c++-2010
我可以在VC++ 2010应用程序中使用FileSaveDialog(Common Item Dialog),如下所示:
IFileDialog *pFileDialog;
HRESULT hr = CoCreateInstance(CLSID_FileSaveDialog, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pFileDialog));
Run Code Online (Sandbox Code Playgroud)
但是,当我将此代码放入已从VC++ 6.0转换为VC++ 2010的项目中时,我收到以下错误:
"错误C2787:'IFileDialog':没有与此对象关联的GUID"
我还在IID_PPV_ARGS
宏下浮动错误和浮动错误:
"_uuidof的操作数必须有一个类或枚举类型,其中指定了_declspec(uuid('...'))"
我没有在任一项目中使用公共语言运行时支持(/ clr).
如何将GUID与我的对象相关联?
问题是我设置了一个针对Win XP操作系统的编译器标志.这就是为什么Vista中引入的功能没有定义的原因.
我有_WIN32_WINNT = 0x0501
(WinXP).当我将其更改为0x0600
(Vista)时,定义了IFileDialog.
马克,你关于调查IFileDialog定义的建议引导我找到原因.它引导我到ShObjIdl.h
文件,但定义了IFileDialog的部分是灰色的,导致我达到#if (NTDDI_VERSION >= NTDDI_VISTA)
条件.
谢谢!
归档时间: |
|
查看次数: |
4038 次 |
最近记录: |