我试图从一个数组中加载一个图标,但没有成功。
我有一个数组,其中包含一个raw的图标(.ico),我想加载它。问题是,函数 CreateIconFromResourceEx
返回NULL。
关于图标,我在一个数组中保存了一个.ico文件。
这是我的代码。
HICON icon = NULL;
icon = CreateIconFromResourceEx(tray->icon, (DWORD)tray->fsize, TRUE, 0x30000, 32, 32, LR_DEFAULTCOLOR | LR_DEFAULTSIZE);
if (nid.hIcon) {
DestroyIcon(nid.hIcon);
}
nid.hIcon = icon;
Shell_NotifyIcon(NIM_MODIFY, &nid);
tray is:
struct tray {
unsigned char *icon;
int fsize;
struct tray_menu *menu;};
我到底做错了什么?
找到问题了...我需要计算IMAGEDATA的偏移量。
offset = LookupIconIdFromDirectoryEx(tray->icon, TRUE, 32, 64, LR_DEFAULTCOLOR);
比
if (offset != 0) {
icon = CreateIconFromResourceEx(tray->icon + offset, (DWORD)tray->fsize, TRUE, 0x30000, 32, 64, LR_DEFAULTCOLOR);
}