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函数来触发重绘以立即显示选中背景
相关推荐
imgsq2 天前
已安装 MFC 仍提示“此项目需要 MFC 库”的解决方法 (MSB8041)
c++·mfc
成功助力英语中国话5 天前
SDK编程,MFC编程,WTL编程之间的关系
c++·mfc
LL5962145695 天前
CEF在MFC上的示例工程
c++·mfc·cef
成功助力英语中国话9 天前
MFC 的固定签名
c++·mfc
界面开发小八哥9 天前
MFC扩展库BCGControlBar Pro v36.1新版亮点 - 对话框&表单组件升级
c++·mfc·bcg·界面控件·ui开发
追烽少年x11 天前
MFC中CMutex类和CSingleLock类,配合使用疑惑
mfc
blog_wanghao11 天前
MFC: 控件根据文本内容大小自动调整
c++·mfc
成功助力英语中国话12 天前
visual studio 2022 手工写一个简单的MFC程序
ide·mfc·visual studio
xiaowu08015 天前
记录MFC联合halcon界面显示开发
c++·mfc
nqqcat~16 天前
MFC学习笔记-1
c++·mfc