WinPro logo. Перейти на сайт www.winpro.narod.ru

Пример разделяемых пиктограмм



Следующий код использует функции 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); 
Hosted by uCoz