Пример разделяемых пиктограмм
Следующий код использует функции CreateIconFromResourceEx, DrawIcon и LookupIconIdFromDirectoryEx и некоторые другие функции для работы с ресурсами для создания пиктограммы основанной на данных другого исполняемого файла. Затем она отображается в окне.
HICON hIcon1; // описатель пиктограммы
HINSTANCE hExe; // описатель загружаемого .EXE файла
HRSRC hResource; // описатель для FindResource
HRSRC hMem; // описатель для LoadResource
BYTE *lpResource; // указатель на данные ресурса
int nID; // идентификатор наиболее подходящего ресурса
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);
// Поиск занимаемой области памяти обнаруженной пиктограммы.
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);
