Сообщений 7    Оценка 0        Оценить  
Система Orphus

Как получить системный ImageList?

Автор: Игорь Вартанов

Версия текста: 1.0

#include <windows.h>
#include <shlobj.h>

#pragma comment(lib, "shell32")

HIMAGELIST GetSysImageList(BOOL bigIcon)
{
    HRESULT     hRes   = NULL;
    HIMAGELIST  hImage = NULL;
    SHFILEINFO  shfi;
    ITEMIDLIST* pidl;
    IMalloc*    pMalloc;

    hRes   = SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOP, &pidl);
    hImage = (HIMAGELIST)SHGetFileInfo((LPCSTR)pidl, 0, &shfi,
                    sizeof(SHFILEINFO), 
                    SHGFI_PIDL | 
                    SHGFI_SYSICONINDEX |
                    bigIcon ? SHGFI_LARGEICON : SHGFI_SMALLICON);
    hRes = SHGetMalloc(&pMalloc);
    pMalloc->Free(pidl);
    pMalloc->Release();
    return hImage;
}
ПРИМЕЧАНИЕ
В примере MSDN предлагается получать результат через путь "C:\". Однако мой опыт показывает, что хотя и редко, но бывают конфигурации, в которых диск C: может отсутствовать (WindowsNT вполне позволяет это сделать). Десктоп же у пользователя будет присутствовать в любом случае...

Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.
    Сообщений 7    Оценка 0        Оценить