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)的主要内容,如果未能解决你的问题,请参考以下文章

MFC总结之CListCtrl用法及技巧

是否可以在没有 MFC 的情况下使用 CListCtrl

如何防止用户调整 clistctrl(报告视图)的列宽?

CListCtrl (MFC) 选择点击通过控制UNDERNEATH列表

更新 CListCtrl 时 MFC 应用程序冻结

MFC中CListCtrl添加复选框,实现单选