MFC CListCtrl 调整项目高度。 (LVS_SMALLICON)
Posted
技术标签:
【中文标题】MFC CListCtrl 调整项目高度。 (LVS_SMALLICON)【英文标题】:MFC CListCtrl Adjust Item Height. (LVS_SMALLICON) 【发布时间】:2013-11-26 06:47:36 【问题描述】:感谢光临!!
我想调整项目的高度。看起来像这样:
但实际上是:
我找到了 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);
(2)。修改字体大小,不好看
(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 机制。
【讨论】:
非常感谢!!最后,我使用 LVS_REPORT ,并隐藏标题,添加图标。然后覆盖“DrawItem”“MeasureItem”...谢谢您的建议!!!以上是关于MFC CListCtrl 调整项目高度。 (LVS_SMALLICON)的主要内容,如果未能解决你的问题,请参考以下文章