ClistCtrl 中的选择和突出显示问题

Posted

技术标签:

【中文标题】ClistCtrl 中的选择和突出显示问题【英文标题】:Problems with selection and highlighting in ClistCtrl 【发布时间】:2013-10-22 11:39:35 【问题描述】:

我发现了一些问题。

我有从 CListCtrl 扩展的类。当我双击行时,我选择了它。一切都很好,但是如果我对某些列进行排序,我就会遇到问题!

例如: 我排在第二位。我选择了它并对列进行排序,突出显示在第二个位置,但我的项目已移至第 4 行(并且选择已移至第 4 行)

我有一种不好的感觉,它可能是一些错误:(

有人看到过这样的问题吗?

PS:我不确定我是否必须提供一些代码,因为猜想没关系,但如果需要我会发布它

非常感谢你,对不起我的英语)

【问题讨论】:

听起来您在扩展类中以某种方式将选择与突出显示分开了。我认为您应该添加该类的代码。 【参考方案1】:

我只在所有者数据列表视图 (LVS_OWNERDATA) 中看到过这个问题,所以我猜这里就是这种情况。 AFIK 有两种可能的解决方案。首先是自己存储选择状态,然后使用 LVM_SETCALLBACKMASK 让控件知道您将提供选择状态。您还必须响应鼠标单击并更新数据数组。另一种解决方案是在排序之前存储选定项目的列表,取消选择所有项目,进行排序,然后最后使用存储的列表恢复选择。

【讨论】:

嗨,阿布拉克萨斯!但是这个问题只存在于 Windows 8 如果您没有实现虚拟列表视图(没有 LVS_OWNERDATA 样式),那么很抱歉,我不知道问题出在哪里。但是,如果您正在实现一个虚拟列表视图(使用 LVS_OWNERDATA 样式),那么所有版本的 Windows 都存在此问题。

以上是关于ClistCtrl 中的选择和突出显示问题的主要内容,如果未能解决你的问题,请参考以下文章

在 CEdit 文本更改时选择 CListCtrl 中的项目

PDFView osx中的突出显示选择

选择 QTableWidget 中的行和列,同时保持突出显示

选择行时禁用uitableviewcell中的突出显示按钮

如何选择并突出显示另一个应用程序中的窗口?

ListFragment 中的选定项目未突出显示