尝试使用SHCreateShellItem,有#include问题

时间:2010-03-29 07:49:58

标签: windows com winapi

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}}?

2 个答案:

答案 0 :(得分:1)

_WIN32_IE通常在您的stdafx.h文件中定义。你必须在那里改变它。

答案 1 :(得分:0)

不要直接定义_WIN32_IE,使用_WIN32_WINNT(设置SDK包含的目标平台)隐式执行

#define _WIN32_WINNT 0x0600 
#include <windows.h>
#include <shlobj.h>