Win32 API. Пиктограммы - Совместное использование ресурсов пиктограммы
ОГЛАВЛЕНИЕ
Страница 10 из 30
Совместное использование ресурсов пиктограммы
Следующий код использует функции 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);