Страница 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); |