代码之家  ›  专栏  ›  技术社区  ›  dreamlax

正在尝试使用shCreateShellItem,其中包含问题

  •  1
  • dreamlax  · 技术社区  · 15 年前

    调用中有一个函数 SHCreateShellItem <shlobj.h> 但是它已经 #ifdef 'd根据是否 _WIN32_IE 大于或等于 0x601 (如果是的话,那么声明就是存在的)。然而,即使我定义 _ 32岁 0x601 在我包括之前 <SHLOBJ.H> ,MSVC++仍然抱怨 SHCreateShellItem(创建外壳项) 未声明。

    例如,我无法编译以下内容:

    #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);
    }

    我需要定义吗 _ 32岁 以不同的方式?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Stefan    15 年前

    _WIN32_IE 通常在您的 stdafx.h 文件。你必须在那儿换。

        2
  •  0
  •   selbie    15 年前

    不要直接定义_win32_ie,用_win32_winnt隐式定义_win32_ie(它为sdk包括设置目标平台)

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