Подгружение иконок с *.ехе файлов

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

xpymep
Сообщения: 53
Зарегистрирован: 08 дек 2004, 21:42
Контактная информация:

Можно по-подробней про SHGetFileInfo... я не нашел хелп про эту функцию.
Как я понял:
SHGetFileInfо(имя_файла,не_знаю_что_за_параметр_ставлю_на_NULL,структура_куда_записуется_найденое,флаг1,флаг2)?
Правильно?
Romeo, гы сам не наю че я написал деструктор...я тады 2 дня подряд не спал :) . Наверно я хотел сказать дескриптор :) или что-то вроде, я уже и сам не помню.
Hawk
Сообщения: 216
Зарегистрирован: 17 фев 2004, 14:52
Откуда: СПб
Контактная информация:

Там несколько способов получить через SHGetFileInfo иконку, один из них такой -

So how can I get it?
Here is a function that returns a handle to the system image list:

Код: Выделить всё

HIMAGELIST GetSysImageList()
{
    HIMAGELIST  himl;
    SHFILEINFO  sfi;

    himl = (HIMAGELIST)SHGetFileInfo(
       _T("\\"), 0, &sfi, sizeof(sfi), SHGFI_SYSICONINDEX|SHGFI_SMALLICON);

    return himl;
}

Note: If you need large icons instead of small ones, use SHGFI_LARGEICON flag instead of SHGFI_SMALLICON.

If you are using MFC, you can then attach handle returned by this function to a CImageList class object.

Where do indices in the system image list come from?
You can get index of icon associated with a specific file or folder using SHGetFileInfo function:

Код: Выделить всё

int GetSysIlIndex(LPCTSTR szFileName)
{
    SHFILEINFO  sfi;
    ::SHGetFileInfo(
      szFileName, 0, &sfi, sizeof(sfi), SHGFI_SYSICONINDEX|SHGFI_SMALLICON);

    return sfi.iIcon;
}
Думаю будет работать и так -

Код: Выделить всё

HICON GetFileIcon(LPCTSTR szFileName)
{
    SHFILEINFO  sfi;
    ::SHGetFileInfo(
      szFileName, 0, &sfi, sizeof(sfi), SHGFI_ICON |SHGFI_SMALLICON);

    return sfi.hIcon;
}
Hawk
Сообщения: 216
Зарегистрирован: 17 фев 2004, 14:52
Откуда: СПб
Контактная информация:

Кроме того еще есть ExtractIcon посмотри в MSDN - это самое простое по моему
Ответить