-1

助けてください!アイコン、hbitmap、cbitmapを介して画像を画像リストにロードしようとしました(mfcダイアログベースのアプリケーションを使用しています)。しかし、画像は表示されません。しかし、空のsdi mfcアプリケーションでイメージを再作成すると、なんとかイメージを表示できました。

m_TreeInspCtrl.DeleteAllItems();

CImageList imgl_Tree;
imgl_Tree.Create(16, 16, ILC_COLOR32, 1, 1);

/*
HBITMAP hBmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_TREE_PASS), IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS);
*/

imgl_Tree.Add(AfxGetApp()->LoadIcon(IDI_ICON_PASS));

/*
CBitmap m_TreePass;
//m_TreePass.Attach(hBmp);
m_TreePass.LoadBitmap(IDB_TREE_PASS);
imgl_Tree.Add(&m_TreePass, RGB(255,0,255)); 
*/

m_TreeInspCtrl.SetImageList (&imgl_Tree, TVSIL_NORMAL); 

CString s_Root = "Inspection Sequence";
HTREEITEM h_Root = m_TreeInspCtrl.InsertItem(s_Root, 0, 0, TVI_ROOT);
m_TreeInspCtrl.SetItemColor(h_Root, RGB(0, 150, 0));
4

1 に答える 1

1

ダイアログが存在する間中有効なCImageListを作成する必要があります。コードで作成したものはスタック上で一時的なものであり、初期化関数が戻ったときに破棄されます。ダイアログクラスのメンバー変数として作成することをお勧めします。

于 2013-02-22T12:40:03.080 に答える