Попытка использовать SHCreateShellItem с проблемами #include - PullRequest
1 голос
/ 29 марта 2010

В функции SHCreateShellItem есть функция, которая объявлена ​​в <shlobj.h>, но она была #ifdef 'вне зависимости от того, больше или равно _WIN32_IE или равно 0x601 (если оно есть, то декларация присутствует). Однако, даже когда я определяю от _WIN32_IE до 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);
}

Нужно ли определять _WIN32_IE по-другому?

Ответы [ 2 ]

1 голос
/ 29 марта 2010

_WIN32_IE обычно определяется в вашем файле stdafx.h. Вы должны изменить это там.

0 голосов
/ 29 марта 2010

Не определяйте _WIN32_IE напрямую, делайте это неявно с _WIN32_WINNT (который устанавливает целевую платформу для включаемых SDK)

#define _WIN32_WINNT 0x0600 
#include <windows.h>
#include <shlobj.h>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...