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函数来触发重绘以立即显示选中背景
相关推荐
炯哈哈16 小时前
【上位机——MFC】视图
开发语言·c++·mfc·上位机
炯哈哈1 天前
【上位机——MFC】文档
开发语言·c++·mfc·上位机
胡八一1 天前
vs2022解决 此项目需要MFC库。从visual studio安装程序(单个组件选项卡)为正在使用的任何工具和体系结构安装他们问题
c++·mfc·visual studio
R-G-B3 天前
【MFC】 VS2022打开低版本的MFC,双击.rc文件,DIalog加载失败,页面弹窗fatal error RC***:cannot open*****
c++·mfc·vs打开较早版本mfc·双击.rc文件·dialog加载失败·fatal error rc·cannot open
炯哈哈5 天前
【上位机——MFC】运行时类信息机制
开发语言·c++·mfc·上位机
LaoWaiHang5 天前
MFC案例:使用键盘按键放大、缩小窗口图像的实验
c++·mfc
h39746 天前
MFC文件-写MP4
c++·windows·音视频·mfc
h39746 天前
MFC文件-屏幕录像
c++·windows·音视频·mfc
炯哈哈8 天前
【上位机——MFC】菜单类与工具栏
开发语言·c++·mfc·上位机
炯哈哈9 天前
【上位机——MFC】MFC入门
开发语言·c++·mfc·上位机