在SHCreateShellItem
中声明了一个名为<shlobj.h>
的函数,但#ifdef
已基于_WIN32_IE
是否大于或0x601
等于_WIN32_IE
(如果是,则声明存在)。但是,即使我在添加0x601
之前将<shlobj.h>
定义为SHCreateShellItem
,MSVC ++仍会抱怨#define _WIN32_IE 0x601
#include <shlobj.h>
int someFunction (LPITEMIDLIST parent, LPITEMIDLIST child)
{
HRESULT result;
IShellItem *shellObj;
result = SHCreateShellItem (parent, NULL, child, &shellObj);
if (SUCCEEDED(result))
{
// do stuff
}
return SUCCEEDED(result);
}
未声明。
例如,我无法进行以下编译:
_WIN32_IE
我是否需要以不同的方式定义{{1}}?
答案 0 :(得分:1)
_WIN32_IE
通常在您的stdafx.h
文件中定义。你必须在那里改变它。
答案 1 :(得分:0)
不要直接定义_WIN32_IE,使用_WIN32_WINNT(设置SDK包含的目标平台)隐式执行
#define _WIN32_WINNT 0x0600
#include <windows.h>
#include <shlobj.h>