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

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

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Владимир Соковиков - 28.06.2002