在 vc++ 中重新调整任何 clistctrl 列的大小时避免使用补丁

Posted

技术标签:

【中文标题】在 vc++ 中重新调整任何 clistctrl 列的大小时避免使用补丁【英文标题】:Avoid patches while re-sizing any column of clistctrl in vc++ 【发布时间】:2014-04-30 11:57:41 【问题描述】:

当我重新调整加载有UxTheme.dllclistctrl(带有报告视图)的任何列的大小时,它会在所有项目的末尾创建补丁(如下图“项目 4”所示)。

为什么会出现这些补丁以及如何避免这些补丁?

【问题讨论】:

如果您显示一些提供问题上下文的代码会很有帮助。 @rrirower 我创建了加载库“UxTheme.dll”的 CListCtrl,出现此补丁,否则不会出现。 【参考方案1】:

这是一个绘画问题。您所说的“补丁”是从被移动的列分隔线保留在屏幕上的伪影。

你说问题与库UxTheme.dll的加载有关。这意味着您正在为 ListView 控件设置 Explorer 主题。该主题旨在与双缓冲一起使用。为此,您需要为控件设置LVS_EX_DOUBLEBUFFER 扩展样式标志。

myListCtrl.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_DOUBLEBUFFER, LVS_EX_DOUBLEBUFFER);

【讨论】:

以上是关于在 vc++ 中重新调整任何 clistctrl 列的大小时避免使用补丁的主要内容,如果未能解决你的问题,请参考以下文章

虚拟 CListCtrl 自动大小

如何停止显示 CListCtrl 的底部滚动条?

vc CListCtrl用FindItem函数 查找第n列中的值? 哪位高人能指点一下,我急用,谢谢!

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

双击后在 CListCtrl 中保持高亮显示

MFC CListCtrl 调整项目高度。 (LVS_SMALLICON)