2011-04-18 21 views
1

我想將圖像添加到列表視圖。我保存了一張32x16的圖像,並嘗試使用ImageList_Add()將其分成2張圖像(因爲它應該能夠從寬度推斷圖像的數量)。這些項目正在添加,但沒有圖像。點擊時看起來有些東西,但不是我想要的圖像和尺寸。Win32 - ListView中的圖像列表

我使用下面的代碼:

LVCOLUMN lvc = {0}; 
lvc.mask  = LVCF_TEXT | LVCF_WIDTH; 
lvc.pszText = _T("Some column header"); 
lvc.cx  = 150; 

HWND hwndListView = GetDlgItem(hwndDlg, IDC_LISTVIEW); 
ListView_InsertColumn(hwndListView, 0, &lvc); 

HIMAGELIST hImageList = ImageList_Create(16, 16, ILC_COLOR, 2, 0); 
HBITMAP hbmBlobs = (HBITMAP)LoadImage((HINSTANCE)lParam, 
    MAKEINTRESOURCE(IDB_BLOBS), IMAGE_BITMAP, 0, 0, 0); 

ImageList_Add(hImageList, hbmBlobs, NULL); 
DeleteObject(hbmBlobs); 
ListView_SetImageList(hwndListView, hImageList, LVSIL_SMALL); 
ImageList_Destroy(hImageList); 

LVITEM lvi = {0}; 
lvi.mask = LVIF_IMAGE; 
lvi.iImage = 0; 
ListView_InsertItem(hwndListView, &lvi); 

lvi.iImage = 1; 
ListView_InsertItem(hwndListView, &lvi); 

我已上傳骨架代碼,做最低限度創建ListView和我在使圖像顯示的嘗試。感謝您的時間。

http://localhostr.com/file/adUSZvF/Skeleton.rar

回答

0

您不能調用ImageList_Destroy在圖像列表!沒有LVS_SHAREIMAGELISTS風格的列表視圖會破壞你的圖像列表...

+0

謝謝安德斯。我一定誤解了文檔。將該行移至WM_CLOSE會導致按預期行事的對話! – 2011-04-19 07:39:22