MFC 的 CListCtrl 控件,使用SetItemState 方法来设置选中某个 item,如何达到效果和鼠标点击一致

1)查询到的方法如下:

// 假设你要选中第 2 行(索引从 0 开始)

int nItem = 1;

// 取消所有其他选中项

m_ListCtrl.SetItemState(-1, 0, LVIS_SELECTED);

// 设置选中状态,并确保它具有焦点

m_ListCtrl.SetItemState(nItem, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);

// 确保选中的项可见

m_ListCtrl.EnsureVisible(nItem, FALSE);

2)上面的示例代码,设置选中了某个 item,但是没有鼠标点击选中的那个蓝色背景,几经查询后,是需要下面的处理:

void SelectItem(CListCtrl& listCtrl, int nItem)

{

if (nItem < 0 || nItem >= listCtrl.GetItemCount())

return;

// 取消所有其他选中项

listCtrl.SetItemState(-1, 0, LVIS_SELECTED | LVIS_FOCUSED);

// 选中目标项,并确保它获得焦点

listCtrl.SetItemState(nItem, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);

// 设置焦点到 list control,以确保蓝色背景显示

listCtrl.SetFocus();

// 触发重绘,确保背景颜色立即更新

listCtrl.RedrawItems(nItem, nItem);

listCtrl.UpdateWindow();

}

++重点++:

使用RedrawItems函数来触发重绘以立即显示选中背景
相关推荐
蕓晨4 天前
MFC实现画图菜单小程序
c++·mfc
浩浩测试一下9 天前
windows 加壳工具代码实现02 - 加壳界面实现MFC
windows·mfc·免杀·加壳器·pe应用
想人陪的玫瑰15 天前
winform 能用 Native AOT 吗?——TDS 项目的实战尝试
c++·mfc
USC-XiangLuXun17 天前
GUI软件灰盒测试技术和方法 篇一
功能测试·microsoft·集成测试·mfc
博客18001 个月前
酷宝的使用方法,超好用的免费界面库,C++、MFC可用
c++·mfc·界面库·库来帮·酷宝
何以解忧,唯有..1 个月前
Go 语言数据类型详解:从基础到复合类型
开发语言·golang·mfc
tiandyoin1 个月前
MFC奇怪问题--连续窗口ID,关闭其中一个才能打开另一个
dialog·mfc·vc++·ws_child·mdi
兵哥工控1 个月前
高精度微秒延时函数实现顺控工控项目实例
c++·mfc·硬件高精度计时器
兵哥工控2 个月前
MFC开关量输出发脉冲实例
c++·mfc·开关量发脉冲
ZK_H2 个月前
MFC学习——简易计算器以及跨应用通信
学习·5g·mfc