我很困惑,因爲我無法確定爲什麼我的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