The following code uses the functions CreateIconFromResourceEx, DrawIcon, and LookupIconIdFromDirectoryEx, and several of the resource functions, to create an icon handle based on icon data from another executable file. Then, it displays the icon in a window.
HICON hIcon1; // icon handle
HINSTANCE hExe; // handle to loaded .EXE file
HRSRC hResource; // handle for FindResource
HRSRC hMem; // handle for LoadResource
BYTE *lpResource; // address of resource data
int nID; // ID of resource that best fits current screen
HDC hdc; // handle of display context
// Load the file from which to copy the icon.
hExe = LoadLibrary("myapp.exe");
// Find the icon directory whose identifier is 440.
hResource = FindResource(hExe,
MAKEINTRESOURCE(440),
RT_GROUP_ICON);
// Load and lock the icon directory.
hMem = LoadResource(hExe, hResource);
lpResource = LockResource(hMem);
// Get the identifier of the icon that is most appropriate
// for the video display.
nID = LookupIconIdFromDirectoryEx((PBYTE) lpResource, TRUE,
CXICON, CYICON, LR_DEFAULTCOLOR);
// Find the bits for the nID icon.
hResource = FindResource(hExe,
MAKEINTRESOURCE(nID),
MAKEINTRESOURCE(RT_ICON));
// Load and lock the icon.
hMem = LoadResource(hExe, hResource);
lpResource = LockResource(hMem);
// Create a handle to the icon.
hIcon1 = CreateIconFromResourceEx((PBYTE) lpResource,
SizeofResource(hExe, hResource), TRUE, 0x00030000,
CXICON, CYICON, LR_DEFAULTCOLOR);
// Draw the icon in the client area.
DrawIcon(hdc, 10, 20, hIcon1);