从一个数组中创建一个图标[重复]。

问题描述 投票:0回答:1

我试图从一个数组中加载一个图标,但没有成功。

我有一个数组,其中包含一个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;};

我到底做错了什么?

c++ visual-studio winapi visual-c++
1个回答
1
投票

找到问题了...我需要计算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);
}
© www.soinside.com 2019 - 2024. All rights reserved.