【问题标题】:Adding to HIMageList failing, cannot figure out why添加到 HIMageList 失败,无法弄清楚原因
【发布时间】:2012-07-24 11:54:26
【问题描述】:

我很困惑,因为我无法确定 ImageList_Add 调用失败的原因。我知道这一定是我对图像做错了,或者我说错了,但我不知道如何修复它:S 您能提供的任何帮助将不胜感激! :)

我正在使用的代码如下。我在控制台上得到输出,说它无法添加到图像列表中。从文档中,ImageList_Add 将返回图像列表中它设法添加图像的位置的索引,因此如果不能,则返回 -1。

这一切都很好,但我在任何地方都找不到导致添加失败的原因/原因!

代码可能存在内存泄漏,但目前,我花了将近一天的时间试图找出与此相关的各种问题,所以我只想让它工作!

    HIMAGELIST imageList = ImageList_Create(20,20,ILC_COLOR16,1,2 );
if (imageList == NULL)
{
    printf("Error creating imagelist - dlg_create_dropdown_menu. Returning NULL\n");
    return NULL;
}

HBITMAP currentImage = (HBITMAP) LoadImage(NULL,"active_mdoe_icn.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
if (currentImage == NULL) 
{
   if (GetLastError()== 2) 
   {
       printf("File not found - dlg_create_dropdown_menu. Returning NULL.\n");
       return NULL;
   }
    printf("Error loading image from file - dlg_create_dropdown_menu. Returning NULL.\n");
    return NULL;
}
int imageIndex;
if ( (imageIndex = ImageList_Add(imageList,currentImage,NULL)) == -1 )
{
    printf("Error adding to the image list - dlg_create_dropdown_menu. Returning NULL.\n");
    return NULL;
}

谢谢大家,任何帮助将不胜感激! :)

这可能是实际图像损坏的问题吗?我已经在几个地方读到过。如果我没有做任何愚蠢的事情,那可能只是我的运气:)

【问题讨论】:

  • 可能您的图像列表使用了ILC_COLOR16,因此它是每像素16位DIB,但是调用LoadImage后的位图将是兼容的位图,即它与您当前的显示设置相匹配。因此,如果它们不相同,则添加可能会失败。您可以尝试使用ILC_COLORDDB,或者您可以确保您的位图格式与图像列表匹配并在LoadImage 调用中使用LR_CREATEDIBSECTION
  • 尝试加载另一个位图,看看您的代码是否有效。 :-)
  • 是的,我将尝试使用更简单的名称,例如 active 或以防 _ 引起问题的东西 :) 感谢所有建议,今天要试一试:P
  • 仍然没有运气,但我会尝试不同的小部件并让你知道:)

标签: c windows winapi user-interface


【解决方案1】:

在与自己和 windows 争论了很多之后,我没有弄清楚为什么添加不起作用。

我没有尝试使用图像列表,而是一次加载每个图像,以这种方式使用它。不知道为什么我认为使用图像列表更好:s

我试图将图像加载到我正在创建的下拉菜单中,但我找到了一种更好的方法。这是使用 MENUITEMINFO 结构并指定 MIIM_BITMAP | MIIM_STRING 作为 fMask 的两个标志 :) 这意味着我可以在每个菜单项中有一个图像和一个文本 :)

还有带有 0 个下划线的图片名称让 windows 更容易找到 lol

无论如何,希望这对某人有所帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    相关资源
    最近更新 更多