以下代码使用函数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);