当前位置: 首页 > news >正文

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函数来触发重绘以立即显示选中背景
http://www.lryc.cn/news/532749.html

相关文章:

  • 一文读懂:TCP网络拥塞的应对策略与方案
  • 深度整理总结MySQL——子查询的工作原理
  • 20240824 美团 笔试
  • Windows图形界面(GUI)-QT-C/C++ - QT 文本编辑控件详解
  • IDEA中Resolving Maven dependencies卡着不动解决方案
  • go数据结构学习笔记
  • 【后端开发】系统设计101——Devops,Git与CICD,云服务与云原生,Linux,安全性,案例研究(30张图详解)
  • Google地图瓦片爬虫——进阶版
  • 免费windows pdf编辑工具
  • 解锁C#数据校验:从基础到实战的进阶之路
  • Redis的通用命令
  • 设计模式六大原则和单例模式
  • Redis性能优化
  • SAM 大模型杂谈
  • openGauss 3.0 数据库在线实训课程2:学习客户端工具gsql的使用
  • B站自研的第二代视频连麦系统(上)
  • 【远程控制】安装虚拟显示器
  • 基于HAI部署DeepSeekR1的招标文书智能辅助生产开发与应用
  • 解决whisper 本地运行时GPU 利用率不高的问题
  • 模拟实战-用CompletableFuture优化远程RPC调用
  • 深入解析:Jsoup 库的多功能应用场景
  • Polardb三节点集群部署安装--附虚拟机
  • Redis - 全局ID生成器 RedisIdWorker
  • 【Vitest】单元测试
  • 达梦数据库从单主模式转换为主备模式
  • 【Elasticsearch】nested聚合
  • 虹科波形小课堂 | 三分钟掌握车辆相对压缩测试!不拆发动机、不测缸压就能判断故障缸!
  • 【玩转全栈】--创建一个自己的vue项目
  • 基于 Spring Cloud + Spring AI + VUE 的知识助理平台介绍以及问题
  • < 自用文儿 > 下载 MaxMind GeoIP Databases 对攻击的 IP 做 地理分析