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函数来触发重绘以立即显示选中背景
相关推荐
水饺编程1 天前
MFC 第一章概述
c语言·c++·windows·mfc
獨枭6 天前
彻底解决 MFC 自绘控件闪烁
c++·mfc
獨枭6 天前
MFC Resource.h 文件详解与修改指南
c++·mfc
l1t6 天前
三种读写传统xls格式文件开源库libxls、xlslib、BasicExcel的比较
c++·人工智能·开源·mfc
DoWeixin68 天前
【请关注】VC内存泄露的排除及处理
c++·mfc·vc++·vc
lzb_kkk11 天前
【MFC】初识MFC
c++·mfc
技术程序猿华锋12 天前
Void:免费且隐私友好的 AI 编码利器,挑战 Cursor 地位?
c++·人工智能·mfc
等风来不如迎风去12 天前
【MFC】如何设置让exe的控制台不会跟着exe退出而退出
c++·mfc·控制台
秋天的落雨16 天前
MFC中嵌入外部独立EXE程序
c++·mfc
跑不了的你16 天前
MFC——编程框架和基础
c++·mfc