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函数来触发重绘以立即显示选中背景
相关推荐
C++ 老炮儿的技术栈18 小时前
main函数之后的调用
c语言·c++·人工智能·qt·mfc·c
学逆向的5 天前
win32消息类型
windows·网络安全·mfc·api·win32
C++ 老炮儿的技术栈17 天前
我们在设计tcp协议时,要传一个字符串过去,报文:头十长度十内容,是否要把‘\0‘也填入,长度是否包含‘\0‘
开发语言·数据结构·c++·mfc·c
莫生灬灬22 天前
灵码 LingBuilder:用中文写代码,确定性生成真实 C++ 工程(开源)
c++·开源·mfc
nLif23 天前
基于GTK的简易MFC对话框兼容层 -- MfcToGTK
linux·c++·mfc·gtk
C++ 老炮儿的技术栈1 个月前
MFC CPtrArray的用法
开发语言·数据结构·c++·算法·mfc·c
神仙别闹1 个月前
基于C++ MFC 实现的智慧公交系统
开发语言·c++·mfc
xcl09251 个月前
商超智能运营实战:数据驱动提升门店效率与体验指南
java·mfc·宠物
神仙别闹1 个月前
基于C++ MFC RSA 实现加密程序
开发语言·c++·mfc
xcl09251 个月前
宠物救助领养系统实战开发指南:从需求分析到部署上线
java·mfc·宠物