0

ImageList_Add呼び出しが失敗する理由を特定できないため、混乱しています。私はそれが私がイメージで間違っていることであるに違いないことを知っています、あるいは私はそれを間違っていると呼んでいるかもしれませんが、私はそれを修正する方法がわかりません:Sあなたが提供できる助けをいただければ幸いです!:)

私が使用しているコードは以下のとおりです。画像リストに追加できなかったという出力がコンソールに表示されます。ドキュメントから、ImageList_Addは、画像リストのどこに画像を追加したかを示すインデックスを返すため、できない場合は-1が返されます。

これはすべてうまくいっていますが、追加が失敗する理由/原因はどこにも見つかりません!

コードにメモリリークがある可能性がありますが、現時点では、これに関するさまざまな問題を理解するためにほぼ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;
}

おかげさまで、どんな助けでも大歓迎です!:)

これは、実際の画像が破損しているという問題でしょうか?私はそれについていくつかの場所で読んだことがあります..私が何もしていなければ、運が良かったかもしれません:)

4

1 に答える 1

0

私自身とウィンドウズと多くの議論をした後、私は追加が機能しなかった理由を理解しませんでした。

イメージリストを使用する代わりに、各イメージを一度に1つずつロードして、そのように操作します。画像リストを使用する方が良いと思った理由がわかりません:s

作成していたドロップダウンメニューに画像を読み込もうとしていましたが、より良い方法を見つけました。これは、MENUITEMINFO構造体を使用し、MIIM_BITMAP|を指定していました。fMaskへの2つのフラグとしてのMIIM_STRING:)これは、各メニュー項目に画像とテキストを含めることができることを意味します:)

また、アンダースコアが0の画像名は、どういうわけかWindowsがlolを見つけやすくします

とにかく、これが誰かを助けたことを願っています:)

于 2012-08-01T10:01:54.397 に答える