我正在(VS2013)上构建GTK + VS2010项目配置,并且我试图添加浏览文件夹功能(我想使用Native Windows方式)。我使用以下代码:
#include <windows.h>
#include <ShlObj.h>
DWORD WINAPI BrowseFolder(void *ptr)
{
char path[MAX_PATH];
cchar * path_param = (cchar*)ptr;
BROWSEINFO bi = { 0 };
bi.lpszTitle = ("Select Folder");
bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE;
bi.lpfn = BrowseCallbackProc;//callback function defined..
bi.lParam = (LPARAM)path_param;
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);
if (pidl != 0)
{
//get the name of the folder and put it in path
SHGetPathFromIDList(pidl, path);
//free memory used
IMalloc * imalloc = 0;
if (SUCCEEDED(SHGetMalloc(&imalloc)))
{
imalloc->Free(pidl);
imalloc->Release();
}
strcpy(g_sDefaultDir, path);
return 0;
}
}
但在编译时我收到此错误消息
1&gt; C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.1A \ Include \ shobjidl.h(17624):错误C2061:语法错误:标识符&#39; IXMLDOMDocument&#39;
这是我的配置: 我在VS2013上运行VS2010解决方案 使用标准Windows库 不使用ATL 并使用多字节字符集
有什么想法吗?
答案 0 :(得分:0)
我找到了两种方法来解决我的问题。
我之前已经定义了msxml和ISoftDistExt来解决歧义问题,所以我不得不像以下那样#undef:
#undef __msxml_h__
#undef __ISoftDistExt_INTERFACE_DEFINED__
#include <MsXml.h>
#include <ShlObj.h>
此外,您可以使用#import语句,如follownig
#undef __msxml_h__
#undef __ISoftDistExt_INTERFACE_DEFINED__
#import <msxml6.dll>
using namespace MSXML2;
#include <ShlObj.h>
希望这会有所帮助。