Win32 API. Пиктограммы - Совместное использование ресурсов пиктограммы

ОГЛАВЛЕНИЕ

Совместное использование ресурсов пиктограммы

Следующий код использует функции CreateIconFromResourceEx, DrawIcon и LookupIconIdFromDirectoryEx и некоторые из функций ресурса, чтобы создать дескриптор пиктограммы, основанный на ее данных из другого исполняемого файла. Затем, он показывает на экране пиктограмму в окне.

HICON hIcon1; // дескриптор пиктограммы
HINSTANCE hExe; // дескриптор загружаемого .EXE файла
HRSRC hResource; // дескриптор для FindResource (поиска ресурса)
HRSRC hMem; // дескриптор для LoadResource (загрузки ресурса)
BYTE *lpResource; // адрес данных ресурса
int nID;  // ID (идентификатор ресурса, который лучше всего
  // соответствует текущему экрану

HDC hdc;  // дескриптор контекста дисплея

// Загрузка файла, из которого копируется пиктограмма.
hExe = LoadLibrary("myapp.exe");

// Поиск каталога пиктограммы, идентификатор которой - 440.
hResource = FindResource(hExe,
 MAKEINTRESOURCE(440),
 RT_GROUP_ICON);

// Загрузка и просмотр каталога пиктограммы.
hMem = LoadResource(hExe, hResource);

lpResource = LockResource(hMem);

// Получаем идентификатор пиктограммы, которая должна соответствовать
// видеодисплею.
nID = LookupIconIdFromDirectoryEx((PBYTE) lpResource, TRUE,
 CXICON, CYICON, LR_DEFAULTCOLOR);

// Находим биты nID (идентификатора) пиктограммы.

hResource = FindResource(hExe,
 MAKEINTRESOURCE(nID),
 MAKEINTRESOURCE(RT_ICON));

// Загружаем и просматриваем пиктограмму.
hMem = LoadResource(hExe, hResource);

lpResource = LockResource(hMem);

// Создаем дескриптор пиктограммы.

hIcon1 = CreateIconFromResourceEx((PBYTE) lpResource,
 SizeofResource(hExe, hResource), TRUE, 0x00030000,
 CXICON, CYICON, LR_DEFAULTCOLOR);

// Рисуем пиктограмму в рабочей области.
DrawIcon(hdc, 10, 20, hIcon1);