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函数来触发重绘以立即显示选中背景
相关推荐
gscsded4 天前
MFC 入门:从空窗口到一个能交互的小程序
mfc·软件工程
闻缺陷则喜何志丹5 天前
vc入门宝典(九)
数据结构·list·mfc·存储·null·class
闻缺陷则喜何志丹7 天前
VC入门宝典
dialog·mfc·优化·文档·application·command
Access开发易登软件11 天前
我全新开发了一套 Access 通用 Excel 导入工具,现在开源了
数据库·microsoft·excel·mfc·vba·access·access开发
sanqima14 天前
依赖TLS和模块状态的MFC类
c++·mfc·tls·module state
sanqima14 天前
MFC里的线程本地存储(TLS)与模块状态(Module State)
c++·mfc·tls·module state
Leo.yuan14 天前
Kafka+Flink拼凑,还是FineDataLink 5.0一体化?实时数据处理的两种思路
c++·mfc
bkspiderx15 天前
在 MFC 中添加自定义消息:从定义到使用的完整指南
c++·mfc·postmessage·sendmessage·mfc 中添加自定义消息·wm_app·on_message
C++ 老炮儿的技术栈18 天前
sizeof操作符
c语言·c++·人工智能·mfc·c
C++ 老炮儿的技术栈21 天前
main函数之后的调用
c语言·c++·人工智能·qt·mfc·c