MFC中如何使用CListCtrl可以编辑,并添加鼠标右键及双击事件。
要在MFC中使用CListCtrl来实现编辑功能,可以按照以下步骤进行操作:
- 在对话框资源中添加CListCtrl控件,并设置合适的属性。
- 在对话框类的头文件中添加成员变量来管理CListCtrl控件,例如:```
CListCtrl m_listCtrl;
3. 在OnInitDialog函数中添加以下代码来初始化CListCtrl控件:
m_listCtrl.SubclassDlgItem(IDC_LIST_CONTROL, this);
m_listCtrl.InsertColumn(0, _T(“Column 1”), LVCFMT_LEFT, 100);
m_listCtrl.InsertColumn(1, _T(“Column 2”), LVCFMT_LEFT, 100);
m_listCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
4. 在对话框类的头文件中添加消息映射:
```cpp
afx_msg void OnLvnEndlabeleditListControl(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnNMRClickListControl(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnLvnItemActivateListControl(NMHDR *pNMHDR, LRESULT *pResult);
- 在消息映射表中添加以下映射关系:
ON_NOTIFY(LVN_ENDLABELEDIT, IDC_LIST_CONTROL, &CYourDialogClass::OnLvnEndlabeleditListControl)
ON_NOTIFY(NM_RCLICK, IDC_LIST_CONTROL, &CYourDialogClass::OnNMRClickListControl)
ON_NOTIFY(NM_DBLCLK, IDC_LIST_CONTROL, &CYourDialogClass::OnLvnItemActivateListControl)
- 在源文件中添加以下函数实现对应的消息处理:
void CYourDialogClass::OnLvnEndlabeleditListControl(NMHDR *pNMHDR, LRESULT *pResult)
{LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;LV_ITEM* pItem = &pDispInfo->item;CString strNewValue = pItem->pszText;int nItem = pItem->iItem;int nSubItem = pItem->iSubItem;// 处理编辑完成后的新值// ...*pResult = 0;
}void CYourDialogClass::OnNMRClickListControl(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);// 处理鼠标右键事件// ...*pResult = 0;
}void CYourDialogClass::OnLvnItemActivateListControl(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);// 处理双击事件// ...*pResult = 0;
}
通过以上步骤,你可以在MFC中使用CListCtrl实现编辑功能,并添加鼠标右键和双击事件的处理。要在MFC中使用CListCtrl来实现编辑功能,可以按照以下步骤进行操作:
- 在对话框资源中添加CListCtrl控件,并设置合适的属性。
- 在对话框类的头文件中添加成员变量来管理CListCtrl控件,例如:```
CListCtrl m_listCtrl;
3. 在OnInitDialog函数中添加以下代码来初始化CListCtrl控件:
m_listCtrl.SubclassDlgItem(IDC_LIST_CONTROL, this);
m_listCtrl.InsertColumn(0, _T(“Column 1”), LVCFMT_LEFT, 100);
m_listCtrl.InsertColumn(1, _T(“Column 2”), LVCFMT_LEFT, 100);
m_listCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
4. 在对话框类的头文件中添加消息映射:
```cpp
afx_msg void OnLvnEndlabeleditListControl(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnNMRClickListControl(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnLvnItemActivateListControl(NMHDR *pNMHDR, LRESULT *pResult);
- 在消息映射表中添加以下映射关系:
ON_NOTIFY(LVN_ENDLABELEDIT, IDC_LIST_CONTROL, &CYourDialogClass::OnLvnEndlabeleditListControl)
ON_NOTIFY(NM_RCLICK, IDC_LIST_CONTROL, &CYourDialogClass::OnNMRClickListControl)
ON_NOTIFY(NM_DBLCLK, IDC_LIST_CONTROL, &CYourDialogClass::OnLvnItemActivateListControl)
- 在源文件中添加以下函数实现对应的消息处理:
void CYourDialogClass::OnLvnEndlabeleditListControl(NMHDR *pNMHDR, LRESULT *pResult)
{LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;LV_ITEM* pItem = &pDispInfo->item;CString strNewValue = pItem->pszText;int nItem = pItem->iItem;int nSubItem = pItem->iSubItem;// 处理编辑完成后的新值// ...*pResult = 0;
}void CYourDialogClass::OnNMRClickListControl(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);// 处理鼠标右键事件// ...*pResult = 0;
}void CYourDialogClass::OnLvnItemActivateListControl(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);// 处理双击事件// ...*pResult = 0;
}
通过以上步骤,你可以在MFC中使用CListCtrl实现编辑功能,并添加鼠标右键和双击事件的处理。
相关文章:
MFC中如何使用CListCtrl可以编辑,并添加鼠标右键及双击事件。
要在MFC中使用CListCtrl来实现编辑功能,可以按照以下步骤进行操作: 在对话框资源中添加CListCtrl控件,并设置合适的属性。在对话框类的头文件中添加成员变量来管理CListCtrl控件,例如: CListCtrl m_listCtrl; 3. 在O…...

[每周一更]-(第81期):PS抠图流程(扭扭曲曲的身份证修正)
应朋友之急,整理下思路,分享一下~~ 分两步走:先用磁性套索工具圈出要处理的图;然后使用透视剪裁工具,将扭曲的图片拉平即可;(macbook pro) 做事有规则,才能更高效;用什么工具,先列举…...

Kafka安全认证机制详解之SASL_PLAIN
一、概述 官方文档: https://kafka.apache.org/documentation/#security 在官方文档中,kafka有五种加密认证方式,分别如下: SSL:用于测试环境SASL/GSSAPI (Kerberos) :使用kerberos认证,密码是…...

2023南京理工大学通信工程818信号系统及数电考试大纲
注:(Δ)表示重点内容。具体内容详见博睿泽信息通信考研论坛 参考书目: [1] 钱玲,谷亚林,王海青. 信号与系统(第五版). 北京:电子工业出版社 [2] 郑君里,应…...

wsl(ubuntu)创建用户
我们打卡ubuntu窗口,如果没有创建用户,那么默认是root用户 用户的增删改查 查 查询所有的用户列表 cat /etc/passwd | cut -d: -f1cat /etc/passwd: 这个命令用于显示 /etc/passwd 文件的内容。/etc/passwd 文件包含了系统上所有用户的基本信息。每一…...

[足式机器人]Part2 Dr. CAN学习笔记-自动控制原理Ch1-8Lag Compensator滞后补偿器
本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记-自动控制原理Ch1-8Lag Compensator滞后补偿器 从稳态误差入手(steady state Error) 误差 Error : E ( s ) R ( s ) − X ( s ) R ( s ) − E ( s ) ⋅ K G …...

swift-碰到的问题
如何让工程不使用storyboard和scene 删除info.plist里面的Application Scene mainifest 删除SceneDelegate.swift 删除AppDelegate.swift里面的这两个方法 func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession…...

安全与认证Week4
目录 目录 Web Security (TLS/SSL) 各层安全协议 Transport Layer Security (TLS)传输层安全性(TLS) SSL和TLS的联系与区别 TLS connection&session 连接与会话 题目2答案点 TLS ArchitectureTLS架构(5个协议) 题目1答案点 Handshake Proto…...
Golang高质量编程与性能调优实战
1.1 简介 高质量:编写的代码能否达到正确可靠、简洁清晰的目标 各种边界条件是否考虑完备异常情况处理,稳定性保证易读易维护编程原则 简单性 消除多余的重复性,以简单清晰的逻辑编写代码不理解的代码无法修复改进可读性 代码是写给人看的,并不是机器编写可维护代码的第一…...

vite 如何打包 dist 文件到 zip 使用插件 vite-plugin-zip-pack,vue3 ts
vite 如何打包 dist 文件到 zip 使用插件 vite-plugin-zip-pack,vue3 ts 开发过程中一个经常做的事就是将 ./dist 文件夹打包成 zip 分发。 每次手动打包还是很费劲的, vite 同样也有能把 ./dist 文件夹打包成 .zip 的插件,当然这个打包的文…...

jdbc源码研究
JDBC介绍 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。 开发者不必为每家数据通信协议的不同而疲于奔命&#…...

挠性及刚挠结合印制电路技术
1.1挠性印制电路板概述 20世纪70年代末期,以日本厂商为主导,逐渐将挠性印制电路板(flexible printedcircuit board,FPCB,简称为FPC)广泛应用于计算机、照相机、打印机、汽车音响、硬盘驱动器等电子信息产品中。20世纪90年代初期&…...

Python+OpenGL绘制3D模型(七)制作3dsmax导出插件
系列文章 一、逆向工程 Sketchup 逆向工程(一)破解.skp文件数据结构 Sketchup 逆向工程(二)分析三维模型数据结构 Sketchup 逆向工程(三)软件逆向工程从何处入手 Sketchup 逆向工程(四…...

MediaPipeUnityPlugin Win10环境搭建(22年3月的记录,新版本已完全不同,这里只做记录)
https://github.com/homuler/MediaPipeUnityPlugin You cannot build libraries for Android with the following steps. 1、安装msys2配置系统环境变量Path添加 C:\msys64\usr\bin 执行 pacman -Su 执行 pacman -S git patch unzip 2、安装Python3.9.10 勾选系统环境变量 …...
Nginx - location块中的alias和try_files重定向
nginx.conf片段: location /logo/general/ {autoindex_localtime on;alias /opt/config/;try_files /logo/logo.png /www/html/logo.png 404;} 意为:访问/logo/general/地址时, 如:访问http://127.0.0.1/logo/general/logo.png…...
二刷Laravel 教程(用户模型)总结Ⅲ
一、数据库迁移 当我们运行迁移时,up 方法会被调用;(创建表) 当我们回滚迁移时,down 方法会被调用。(删除表) public function up() { //create 方法会接收两个参数:一个是数据…...

安装PyTorch及环境配置(应用于Python上的YOLO)
这个基本都是Bilibili网站里面叫“小手丫子”up的视频教程,此前自己需要装了好几次又卸载了好几次,现在根据视频教学整理出来自己所理解的文档。 注意事项 1.安装的pycharm版本和anaconda版本无要求。 2.运行pycharm尽量以管理员身份运行。 3.Cuda是独…...
【194】PostgreSQL 14.5 编写SQL从身份证号中查找性别,并且更新性别字段。
假设有一张用户表 t_user ,该表设计如下: id: character varying 主键 name: character varying 姓名 idcard: character varying 身份证号 gender: smallint 性别,女是0,男是1根据身份证号查找所有未填写…...
微服务管家:NestJS 如何使用服务发现 Consul 实现高效的微服务节点管理
前言 在微服务架构中,服务发现是一项基础且关键的功能,它允许服务实例在网络中被动态发现。Consul 是一种服务网格解决方案,提供了服务发现、运行状况检查,过去和现代应用程序的连接等功能。 本教程将向您展示如何在 NestJS 框架…...

Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为Mat图像格式(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机掉线自动重连(C) Baumer工业相机Baumer工业相机的图像转换为OpenCV的Mat图像的技术背景在NEOAPI SDK里实现相机图像转换为Mat图像格式联合OpenCV实现相机图像转换为Mat图像格式测试演示图 工业相机…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...

聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...

2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...