我很困惑,因为我无法确定为什么我的ImageList_Add调用失败。我知道这一定是我做错了图像的东西,或者我错了,但我不知道如何去解决它:S任何帮助,你可以提供将不胜感激! :)添加到HIMageList失败,无法弄清楚为什么
我使用的代码如下。我在控制台上得到输出,说它无法添加到图像列表中。从文档中,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'所以它是每像素DIB 16位的,但打完电话后您的位图'LoadImage'将是一个兼容的位图,即它匹配当前的显示设置。所以如果它们不一样,那么添加可能会失败。您可以尝试使用'ILC_COLORDDB',或者您可以确保您的位图格式与图像列表相匹配,并在'LoadImage'调用中使用'LR_CREATEDIBSECTION'。 – tinman 2012-07-24 12:51:44
尝试加载另一个位图,看看你的代码是否工作。 :-) – Xearinox 2012-07-26 03:40:40
是的,我要去尝试一些简单的名字,比如只是主动或者事情发生了_正在引起问题:)感谢所有的建议,今天就打个招呼:P – andrewktmeikle 2012-07-26 08:23:19