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函数来触发重绘以立即显示选中背景
相关推荐
ZK_H5 小时前
MFC程序开发自学笔记其一——windows应用程序与c++基础
c++·笔记·mfc
还在点灯@5 天前
基于visual studio的MFC上位机实现界面切换
c++·visualstudio·mfc
徐安安_ye18 天前
FlashAttention与文本生成:让AI妙笔生花
c++·人工智能·mfc
兵哥工控9 天前
MFC 动态数组CArray类使用说明实例
c++·mfc
ytttr87310 天前
OPC UA 协议栈 C 语言实现
c语言·开发语言·mfc
彦为君11 天前
Java文件处理效率库Commons-IO(速览)
java·开发语言·mfc
春蕾夏荷_72829772511 天前
MFC 简易成绩管理界面
c++·mfc·成绩
神仙别闹13 天前
基于MFC(C++)实现(界面)学委作业管理系统
开发语言·c++·mfc
lingzhilab16 天前
零知派ESP32——BLE Mesh蓝牙组网智能灯控系统(PIR感应+W2812三档调色)
c++·mfc
lihao lihao16 天前
MFC知识点
c++·mfc