CTreeView

2023-11-19

ClassWizard为CTreeCtrl(树控件)添加的NM_DBLCLK(双击)消息的响应函数中带有一个NMHDR * 型指针形参:

1. OnDblClkTree(NMHDR* pNMHDR, LRESULT* pResult)

这个陌生的指针类型常使初用树控件的编程者陷入迷茫之中。实际上我们完全不理会它,也可以实现树控件的双击响应,即在OnDblClkTree( )函数中调用树控件的成员函数CTreeCtrl::GetSelectedItem( )以获取树控件的子项句柄HTREEITEM,得到此句柄后,我们便可用下列成员函数获取子项各种有用信息:

1. CTreeCtrl::GetItemData( )、
2. CTreeCtrl::GetItemHeight( )、
3. CTreeCtrl::GetItemImage( )、
4. CTreeCtrl::GetItemRect( )、
5. CTreeCtrl::GetItemState( )、
6. CTreeCtrl::GetItemText( )。

例程运行结果如下图所示:

示例代码如下:

01. class CTreeCtrlDlg : public CDialog
02. {
03. …………
04. public:
05. HTREEITEM m_hTreeItem;
06. CImageList m_ImgLst;
07.  
08. // Dialog Data
09. //{{AFX_DATA(CTreeCtrlDlg)
10. enum { IDD = IDD_TREECTRL_DIALOG };
11. CTreeCtrl   m_wndTree;//与对话框中树控件相关联
12. //}}AFX_DATA
13.  
14. // Implementation
15. protected:
16. afx_msg void OnDblClkTree(NMHDR* pNMHDR, LRESULT* pResult);
17. …………
18. };
1. void CTreeCtrlDlg::OnDblClkTree(NMHDR* pNMHDR, LRESULT* pResult)
2. {
3. m_hTreeItem = m_wndTree.GetSelectedItem();
4. //以GetItemText()函数为例:
5. CString S1 = m_wndTree.GetItemText(m_hTreeItem);
6. AfxMessageBox("You have selected "+S1);
7. *pResult = 0;  
8. }

右键添加菜单

void   CLeftView::OnNMRclick(NMHDR   *pNMHDR,   LRESULT   *pResult) 
{ 
//   TODO:   在此添加控件通知处理程序代码 

POINT   point; 
UINT   uFlags; 

                //得到当前鼠标坐标 
GetCursorPos(&point); 

                //转换成客户区坐标 
GetTreeCtrl().ScreenToClient(&point); 

                //获取选中的Item的句柄 
HTREEITEM   hItem   =   GetTreeCtrl().HitTest(point,&uFlags); 

                //若句柄不为空,则弹出右键菜单 
if(hItem) 
{	
GetTreeCtrl().SelectItem(hItem); 

ClientToScreen(&point); 

CMenu   menu; 
VERIFY(menu.LoadMenu(IDR_POPMENU2)); 
CMenu   *pPopUp=menu.GetSubMenu(0); 
pPopUp-> TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this); 
} 
*pResult   =   0; 
} 



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CTreeView 的相关文章

  • Python实现评分函数算法——打造高效智能评估系统

    Python实现评分函数算法 打造高效智能评估系统 在众多的机器学习应用场景中 评估模型表现的工作至关重要 评分函数算法对于评估预测结果的好坏 以及对于相应优化算法的使用具有非常重要的作用 本文将介绍如何使用Python实现评分函数算法 并
  • C语言经典100例题(31)--请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

    目录 题目 问题分析 代码 测试如果 错误分析 题目 请输入星期几的第一个字母来判断一下是星期几 如果第一个字母一样 则继续判断第二个字母 问题分析 1 星期日 Sunday 缩写Sun 2 星期一 Monday 缩写Mon 3 星期二 T
  • Recursively Summarizing Enables Long-Term Dialogue Memory in Large Language Models

    本文是LLM系列文章 针对 Recursively Summarizing Enables Long Term Dialogue Memory in Large Language Models 的翻译 递归总结在大型语言模型中实现长期对话记
  • Node.js程序如何访问MySQL数据库?

    mysql 访问数据库 程序运行的时候 数据都是在内存中的 当程序终止的时候 通常都需要将数据保存到磁盘上 无论是保存到本地磁盘 还是通过网络保存到服务器上 最终都会将数据写入磁盘文件 而如何定义数据的存储格式就是一个大问题 如果我们自己来
  • -day26 必备SQL和表关系及授权

    day26 必备SQL和表关系及授权 课程目标 掌握开发中最常见的SQL语句和表关系及授权相关知识点 课程概要 必备SQL 8个必备 表关系 授权 1 必备SQL语句 上一节讲解了最基础SQL语句 增删改查 其实在日常的开发中还有很多必备的
  • 【linux】图文并茂,让你轻松掌握Linux基本指令

    目录 一 前提 二 在root身份下 管理用户 1 whoami 判断身份 2 创建用户 3 销毁用户 三 文件增 删 移动指令 1 pwd 查看路径 2 ls 打开当前目录 3 touch 创建文件 4 nano 打开文件 5 ls l
  • 电脑文件误删除如何恢复?

    每个人在日常工作中都会频繁使用电脑 毕竟工作量都是有一定的要求的 这促使我们在使用电脑的同时 要定期的清理电脑上的文件 但这很有可能会让你出现误删除文件 毕竟当你在清理磁盘或者桌面文件时 可能忘记了这个文件的作用 未点击进去就删除了 那么小
  • vue3 + router-view + keepalive parentComponent.ctx.deactivate is not a function

    vue3中keepAlive的用法与vue2中存在区别 vue3中的用法
  • vim如何选中多行后批量缩进

    vim如何选中多行后批量缩进 1 shift v 选中行 2 使用 进行缩进
  • 大厂经典Jenkins+DevOps面试题整理汇总

    1 传统网站部署流程 2 使用jenkins后网站的部署流程 3 谈谈你对CI CD的认识 这个问题在面试中也经常被问到 主要考察几个方面 你对新技术的了解 你们公司是如何落地的 来我们公司是否可以借鉴 三个概念 持续集成CI 代码合并 构
  • div标签的contenteditable属性实现input效果以及控制input的聚焦失焦

    在触屏 移动端网页 中 聊天室类型的输入框很常见 但是很多都是自定义样式的 直接改造input标签会很麻烦 给div标签设置contenteditable属性可以达到input标签的效果还能轻松的自定义样式 利用input事件和v text
  • 漫画:什么是分布式事务?

    点击上方 程序员小灰 选择 置顶公众号 有趣有内涵的文章第一时间送达 第二天 假如没有分布式事务 在一系列微服务系统当中 假如不存在分布式事务 会发生什么呢 让我们以互联网中常用的交易业务为例子 上图中包含了库存和订单两个独立的微服务 每个
  • poj1463

    1
  • 基于minikube的k8s单机环境部署ThingsBoard

    1 minikube安装k8s单机版 https blog csdn net qq 39879126 article details 121587678 2 安装ThingsBoard 下载 https github com thingsb
  • Qt动画框架设计飞入-消失特效

    用Qt动画框架设计飞入 消失特效 Qt动画框架很强大 只要你想得到 它就有可能帮你实现 这一次我将抽取上一个演示程序的部分来进行介绍 这一部分我命名为 飞入 消失 特效 主要用在文字的显示方面 从这点上说很像PowerPoint上面特效的一
  • Spark常用参数解释

    Spark的默认配置文件位于堡垒机上的这个位置 SPARK CONF DIR spark defaults conf 用户可以自行查看和理解 需要注意的是 默认值优先级最低 用户如果提交任务时或者代码里明确指定配置 则以用户配置为先 用户再
  • python stats_python statsmodel的使用

    1 Pandas Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具 相当于这是Python官方自己的一套库 statsmodel是基于Pandas开发的一套库 用于一些描述统计 统计模
  • MySQL 数据库备份(包含存储过程) 和 还原数据库

    备份数据库 使用命令 mysqldump u用户名 p密码 R 数据库名字 gt t sql sql R 表示 备份数据库时 同时也备份存储过程 还原数据库 运用了一个比较 笨 的方法 在MySQL里面手动新建一个数据库 然后把t sql
  • 部署stable diffusion时踩过的坑

    一个月前开始接触AI绘画 几天前开始学习stable diffusion 由于对自身电脑配置的信心不大 因此开始的时候使用的google免费的15G云盘空间进行云部署 但是15G内存对于想要生成更多的图片的人来说不是很够的 因为在使用过程中
  • 同事都在偷偷用的Python接单平台竟然是这8个!!轻松让你月入上w!

    一 Python爬虫学到怎么样可以接单 1 基础简单回顾 想要上手爬虫 基本知识和工具的熟练使用是必须要具备的 首先Python的一些语言基础肯定要有 爬虫大部分是用python写的 基本的语法 数据结构 函数等要熟练 比如 List di

随机推荐

  • vscode: Downloading package ‘C/C++ language components (Linux / x86_64)‘ Failed.

    使用vscode远程连接docker容器 进入容器后报错 Updating C C dependencies Downloading package C C language components Linux x86 64 Failed R
  • extern const static

    1 基本解释 extern可以置于变量或者函数前 以标示变量或者函数的定义在别的文件中 提示编译器遇到此变量和函数时在其他模块中寻找其定义 此外extern也可用来进行链接指定 也就是说extern有两个作用 第一个 当它与 C 一起连用时
  • 2021-07-29

    git和GitHub的搭配使用1 作为一个小白 一直觉得GitHub是个程序员大佬玩转的东西 最近在发现了宝贝教程https www bilibili com video BV1db4y1d79C spm id from 333 788 b
  • Excalidraw本地化部署

    1 Excalidraw介绍 Excalidraw是一个开源 小巧易用的手写风格的框图画板软件 excalidraw官网地址 https excalidraw com 2 Excalidraw本地化安装 git方式 2 1安装部署 在ter
  • shell case 分支选择

    转自 http hlee iteye com blog 577628 case和select结构在技术上说并不是循环 因为它们并不对可执行代码块进行迭代 但是和循环相似的是 它们也依靠在代码块顶部或底部的条件判断来决定程序的分支 在代码块中
  • STM32单片机的IIC硬件编程---查询等待方式

    IIC器件是一种介于高速和低速之间的嵌入式外围设备 其实总体来说 它的速度算是比较慢的 通常情况下 速度慢的器件意味着更多的等待 这对于精益求精的嵌入式工程师来说 简直就是一个恶梦 低速器件的存取数据实在是太浪费资源 如何面对这种低速设备
  • 【日常】DBeaver中sql连接,局域网状态下

    投身外包大军 项目组使用内网 不能自己下软件 不能自己带U盘 上头的很 使用的DBeaver进行数据库的使用 碰到了sql连接的问题 记录一下 不得不说这个软件的图标有点可爱 一个小河狸 内网连接 不能联网 所以一般配套会给一个sql co
  • 父进程等待子进程终止 wait, WIFEXITED, WEXITSTATUS

    wait 的函数原型是 include
  • jqGrid 编辑完数据后能返回到当前位置的方法

    jqGrid 是一个js的jquery组件 虽然不轻便 但功能还是蛮强大的 也比较方便使用 在数据加载后 经常需要对其中的记录进行编辑 修改完后再返回时需要看到修改后的数据 一般采取重新加载的方法reloadGrid 但问题是列表中的数据因
  • STM8自学入门方向

    我还是我 今年计划自学学习STM8和汇编基础 STM8花了半个月 学的一点皮毛 对芯片有一定的了解了 学完后 发现可以拿到的资源远远没有32多 学习了内部大部分常用资源的应用 IO操作 定时器 IO中断 RS232 IIC 后面会发布我的总
  • 大数据时代下的个人知识管理

    前言 说到个人知识管理 在之前通过网络查询了一些资料 定义看起来让人蠢蠢欲动 作用是能快速找到自己收藏的文档 每个人或多或少都必须的有一些文件管理的习惯 管理就是一种习惯 利用专业的软件可以更容易的养成个人知识管理的习惯 当不小心清空了自己
  • c++双向列表释放_Python 列表List常见操作和错误总结

    一 列表的输入 即从控制台读取输入 然后创建列表 1 一维列表创建常见的方法有 当然 可以进一步简化成下面这样 其中第二句 在列表里用到了列表解析式 这是非常Pythonic的写法 酷炫 2 二维列表的输入和创建 二维列表复杂一些 可以以矩
  • Quartz-Spring[一]之MethodInvokingJobDetailFactoryBean配置任务

    Spring中使用Quartz的3种方法 MethodInvokingJobDetailFactoryBean implements Job extends QuartzJobBean 动态启动 暂定 添加 删除定时功能 可传参数 Quar
  • React之state、hooks性能分析

    目录 一 state 1 为什么使用setState 2 setState异步更新 3 如何获取异步的结果 4 setState一定是异步吗 5 源码分析 6 数据的合并 7 多个state的合并 二 为什么需要Hook 三 Class组件
  • stm32之iap实现应用(基于串口,上位机,详细源码)

    开发环境 Window 7 开发工具 Keil uVision4 硬件 stm32f103c8t6 篇幅略长 前面文字很多 主要是希望能让小白们理解 后面就是实现步骤 包括实现的代码 在研发调试的时候我们一般用烧录器下载代码 对于stm32
  • 4.0创建型模式 描述

    创建型模式的主要关注点是 怎样创建对象 它的主要特点是 将对象的创建与使用分离 这样可以降低系统的耦合度 使用者不需要关注对象的创建细节 对象的创建由相关的工厂来完成 就像我们去商场购买商品时 不需要知道商品是怎么生产出来一样 因为它们由专
  • mysql按照某个字段值内容排序

    举个栗子 假如一个商品下 有多个货品 各个货品的状态值都不一样 那么当只想展示商品中的某一个货品时 希望用户端看到的优先级是在售的货品中的一个 根据mysql提供的方法 field column value1 value2 value3 可
  • RTThread学习有关的Keil的两个符号 $Sub$ $main 与 $Super$ $main

    Keil的两个符号 Sub 与 Super 是其做的打 补丁 功能 具体调用方法就是程序中包含有main函数 和 Sub main Super main 两个符号 源码先放出来 re define main function int Sub
  • 三校生计算机教育,三校生有什么专业

    三校生的专业有计算机信息类 旅游类 艺术类 电工技术类 农林类 机械类 建筑工程类 经济管理类 外语类 烹饪 生物化学类 国土资源类 体育类 教育类 交通运输类 自动化类 包装印刷类 医学类 护理学 药学类 铁道运输类 师范类 水利水电类
  • CTreeView

    ClassWizard为CTreeCtrl 树控件 添加的NM DBLCLK 双击 消息的响应函数中带有一个NMHDR 型指针形参 1 OnDblClkTree NMHDR pNMHDR LRESULT pResult 这个陌生的指针类型常