Загрузите значок по умолчанию для оболочки

Значок по умолчанию в Vista указан в разделе:

HKEY_CLASSES_ROOT\Неизвестно\Иконка по умолчанию

As:

%SystemRoot%\System32\shell32.dll,0

Я хочу загрузить версию этого значка размером 48x48 на С++. Я пытался:

hIcon = (HICON)::LoadImage(hmShell32, MAKEINTRESOURCE(0), IMAGE_ICON, 48, 48, LR_DEFAULTCOLOR);

Однако я возвращаю NULL hIcon, и когда я вызываю ::GetLastError(), он возвращает: ERROR_RESOURCE_TYPE_NOT_FOUND

Как загрузить значок по умолчанию из Shell32.dll?

Заранее спасибо, Уэйн Уолтер Берри.

{6230289B-5BEE-409e-932A-2F01FA407A92}


person Wayne Walter Berry    schedule 19.11.2009    source источник


Ответы (1)


Если вам нужна только поддержка Vista/7, это должно сработать.

SHSTOCKICONINFO iconInfo;
iconInfo.cbSize = sizeof(iconInfo);
if(SUCCEEDED(SHGetStockIconInfo(SIID_DOCNOASSOC, SHGSI_ICONLOCATION, &iconInfo)))
{       
    wcex.hIcon = (HICON)::LoadImage(LoadLibrary(iconInfo.szPath), MAKEINTRESOURCE(-iconInfo.iIcon), IMAGE_ICON, 48, 48, LR_DEFAULTCOLOR);
}
person tyranid    schedule 19.11.2009