hIcon ERROR_NOT_SUPPORTED

时间:2018-03-14 10:58:09

标签: c++ winapi

我正在开发一个C ++应用程序,它有一个动态更新的notifyIcon。除了这个问题之外,事情一直很顺利; hIcon变为NULL,并抛出ERROR_NOT_SUPPORTED。我不能为我的生活找出正在发生的事情。这是我绘制HICON的代码:

// hIco is initialised like this:
// hIco = CreateIcon(NULL, 32, 32, 1, 32, { 0x00 }, { 0x00 });
//HICON hIco;
void CreateGraphIco() {
int width = 32;
int height = 32;
const int size = 32 * 32 * 4;

// Get old icon buffer
ICONINFO info = { 0 };
GetIconInfo(hIco, &info);
BYTE xorBuffer[size];
BYTE andBuffer[size];
GetBitmapBits(info.hbmColor, size, xorBuffer);
GetBitmapBits(info.hbmMask, size, andBuffer);

// (The drawing code for the icon is quite long,
// complicated, and irrelevant, so i'll leave it out)

hIco = CreateIcon(NULL, width, height, 1, 32, andBuffer, xorBuffer);

DeleteObject(info.hbmColor);
DeleteObject(info.hbmMask);

notify.hIcon = hIco;
Shell_NotifyIcon(NIM_MODIFY, &notify);
}

<小时/> 虽然这确实有效,但它只能工作几秒钟或几分钟,直到最终,notifyIcon将消失,hIco将变为NULL。 任何帮助,将不胜感激!我真的在努力解决这个问题,如果有人能帮我解决这个问题,我将非常感激。我确定我犯了一些我甚至没有注意到的愚蠢错误。 干杯!

1 个答案:

答案 0 :(得分:0)

好的,基本上对于将来遇到同样问题的人来说,请务必在致电DestroyIcon之前致电CreateIcon
谢谢阿空加瓜!