共享图标资源

【勇芳软件工作室】汉化HomePreviousNext

以下代码使用函数CreateIconFromResourceExDrawIconLookupIconIdFromDirectoryEx以及若干资源功能,以基于另一个可执行文件的图标数据创建图标句柄。然后,它会在窗口中显示图标。

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);