2012-07-24 88 views
0

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

謝謝大家,任何幫助都會大受好評! :)

這可能是一個問題,實際圖像被損壞?我讀過有關,在一些地方..可能只是我的運氣,如果我沒有做任何愚蠢的:)

+0

這是可能的,你的圖像列表使用'ILC_COLOR16'所以它是每像素DIB 16位的,但打完電話後您的位圖'LoadImage'將是一個兼容的位圖,即它匹配當前的顯示設置。所以如果它們不一樣,那麼添加可能會失敗。您可以嘗試使用'ILC_COLORDDB',或者您可以確保您的位圖格式與圖像列表相匹配,並在'LoadImage'調用中使用'LR_CREATEDIBSECTION'。 – tinman 2012-07-24 12:51:44

+0

嘗試加載另一個位圖,看看你的代碼是否工作。 :-) – Xearinox 2012-07-26 03:40:40

+0

是的,我要去嘗試一些簡單的名字,比如只是主動或者事情發生了_正在引起問題:)感謝所有的建議,今天就打個招呼:P – andrewktmeikle 2012-07-26 08:23:19

回答

0

與自己和窗戶太多爭吵後我沒明白,爲什麼加不工作。

而是採用了圖像列表我只是每一個圖像在在與它的工作,這樣一個時間加載嘗試。不知道爲什麼我想用圖像列表是更好:■

我試圖將圖像加載到一個下拉菜單,我創建,但我發現這樣做的更好的方法。其中使用了MENUITEMINFO結構並指定了MIIM_BITMAP | MIIM_STRING因爲這兩個標誌,以fMask :)這意味着我可以有一個形象以及每個菜單項:)的文本

還與0圖像名稱強調不知何故使得它更容易讓Windows找到笑

不管怎麼說,希望這有助於有人:)

相關問題