2013-11-26 39 views
0

謝謝!MFC CListCtrl調整項目高度。 (LVS_SMALLICON)

我想調整的項目的height.look像這樣的:

enter image description here

,但實際上它是:

enter image description here

,我發現3的方式來調整項目高度:

(1)。添加圖片但文字不在中心。

m_ImageListCList.Create(16,36/*Here*/,ILC_COLOR24|ILC_MASK,$Cnt ,$Cnt); 
m_ImageListCList.Add(&Bitmap2, RGB(192, 192, 192)); 
m_listSchedule.SetImageList(&m_ImageListCList, LVSIL_SMALL); 

enter image description here

(2)。編輯字體大小,它不漂亮

enter image description here

(3)。我想覆蓋它的DrawItem()的MeasureItem()函數。

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct); 
afx_msg void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct); 
ON_WM_MEASUREITEM_REFLECT() 
ON_WM_DRAWITEM() 

但MeasureItem()工作,DrawItem()無法調用。 然後我找到這個上下文

MSDN知識庫Q131788: LVS_OWNERDRAWFIXED樣式僅與LVS_REPORT樣式兼容。您不能讓所有者使用LVS_ICON,LVS_SMALLICON或LVS_LIST樣式繪製ListView。

現在,我沒有更好的主意......非常感謝您的幫助!

回答

1

當MeasureItem的作品,你可以調整你的項目,但你嘗試NM_CUSTOMDRAW。 AFAIK它應該工作。

如果你只需要顯示一個圖標和一些文本,並希望選擇和選擇數據,列表框是否足夠? 使用經典的ListBox和一些Ownerdraw mechansim。

+0

非常感謝! 最後,我使用LVS_REPORT,並隱藏標題,添加圖標。 然後覆蓋「DrawItem」「MeasureItem」... 謝謝你的建議! – user2894287