MFC中树控件节点的点击位置的判断,涉及CTreeCtrl::HitTest()方法的参数值pFlags的含义区别及用法(pFlags值测试)

MFC 之树控件篇 CTreeCtrl m_wndMyTree; 1) 取得树的当前选中节点: HTREEITEM hSelectedItem = m_wndMyTree.GetSelectedItem(); 2) 取得指定节点的标签值(也就是Caption): CString strCaption = m_wndMyTree.GetItemText(hSelectedItem); 3) 记住:MFC中的树 阅读详情

上一篇博客https://blog.youkuaiyun.com/acoolgiser/article/details/81330200提到了HitTest()方法,但是还没有说清楚用法,本文再通过测试来深入理解。

 

 首先看一下MSDN中关于CTreeCtrl::HitTest()方法的用法说明:

https://msdn.microsoft.com/zh-cn/library/x0w7ft34.aspx

其中,pFlags 参数包含一个值来指定点的位置。其可能的值有很多,如下表:

值

含义

TVHT_ABOVE

在客户端区域。

TVHT_BELOW

在工作区中。

TVHT_NOWHERE

在工作区,但是,在最后一项下。

TVHT_ONITEM

在位图或标签与项目。

TVHT_ONITEMBUTTON

在按钮上与项目。

TVHT_ONITEMICON

在位图与项目。

TVHT_ONITEMINDENT

在缩进与项目。

TVHT_ONITEMLABEL

在标签(字符串)与项目。

TVHT_ONITEMRIGHT

在项目右边的区域。

TVHT_ONITEMSTATEICON

在一个用户定义状态的树视图项的状态图标。

TVHT_TOLEFT

在工作区左边。

TVHT_TORIGHT

在工作区的右侧。

 看了此表还是一脸懵B,通过MessageBox来测试,代码如下:

void CTreeView::OnNMClickTree(NMHDR *pNMHDR, LRESULT *pResult)

{

    // TODO: Add your control notification handler code here

    CPoint point;

    UINT uFlag; // 接收有关点击测试的信息

    GetCursorPos(&point); // 获取屏幕鼠标坐标

    m_tree.ScreenToClient(&point);

    // 点击测试,是否点击了树节点

    HTREEITEM hItem = m_tree.HitTest(point, &uFlag);



    if (NULL != hItem)
    {
        if (uFlag&TVHT_ABOVE)
            MessageBox(_T("L1:TVHT_ABOVE"));
        if (uFlag&TVHT_BELOW)
            MessageBox(_T("L2:TVHT_BELOW"));
        if (uFlag&TVHT_NOWHERE)
            MessageBox(_T("L3:TVHT_NOWHERE"));
        if (uFlag&TVHT_ONITEM)
            MessageBox(_T("L4:TVHT_ONITEM"));
        if (uFlag&TVHT_ONITEMBUTTON)
            MessageBox(_T("L5:TVHT_ONITEMBUTTON"));
        if (uFlag&TVHT_ONITEMICON)
            MessageBox(_T("L6:TVHT_ONITEMICON"));
        if (uFlag&TVHT_ONITEMINDENT)
            MessageBox(_T("L7:TVHT_ONITEMINDENT"));
        if (uFlag&TVHT_ONITEMLABEL)
            MessageBox(_T("L8:TVHT_ONITEMLABEL"));

        if (uFlag&TVHT_ONITEMRIGHT)
            MessageBox(_T("L9:TVHT_ONITEMRIGHT"));

        if (uFlag&TVHT_ONITEMSTATEICON)
            MessageBox(_T("L10:TVHT_ONITEMSTATEICON"));

        if (uFlag&TVHT_TOLEFT)
            MessageBox(_T("L11:TVHT_TOLEFT"));

        if (uFlag&TVHT_TORIGHT)
            MessageBox(_T("L12:TVHT_TORIGHT"));

    }

}

一番尝试后,对各个参数的含义一清二楚。

 

瑞芯微RV1126平台人脸识别模型转换实战:从ONNX到RKNN的完整流程 本文详细介绍了在瑞芯微RV1126平台上,将人脸识别模型从ONNX格式转换为RKNN格式的完整实战流程。内容涵盖模型结构分析、RKNN-Toolkit环境搭建、量化数据集准备、核心转换脚本编写与参数解析,以及在设备端的部署测试与性能调优,旨在帮助嵌入式AI开发者高效完成模型转化,提升边缘设备上的人脸识别应用部署效率。 阅读详情

相关推荐

基于大疆TSDK与Pix4D的热红外数据工程化处理:从RJPG到温度正射影像的完整工作流

本文详细介绍了基于大疆TSDK与Pix4D的热红外数据工程化处理完整工作流。通过Python脚本自动化解析RJPG格式的热红外图像,提取并转换其中的原始辐射数据为包含真实温度信息的TIFF文件,再结合Pix4Dmapper进行批量拼接,最终生成可直接用于GIS分析的温度正射影像图。该流程解决了手动处理效率低下、参数校准复杂等难题,实现了从原始数据到定量分析成果的高效、准确、可重复生产。

weixin_29161785的博客 377

mfc hittest 使用方法

1.背景 HitTest为命中测试的意思。在使用MFC编写程序的时候,在树形视图以及列表视图中通常会涉及到需要获得鼠标当前位置所对应的元素。这种通过光标坐标位置来获得相应元素项的操作我们称之为命中测试。2.相关函数 GetMessagePos() :可以获得当前光标的坐标信息 GetCursorPos() :该函数检取光标位置

普雷的博客 4306

OpenCV学习笔记(25)基于MFC和OpenCV的摄像机定标与立体匹配测试程序(20140505更新)

最近整理了一下这两年一直在用的摄像机定标与立体匹配测试程序,将代码进行了重构,界面也做了调整,分享出来方便有需要的朋友使用。当然我的编程能力有限,程序可能还有各种bug,请大家多多包涵。相关问题欢迎留言或email联系讨论,谢谢! ==================================================================================源码

晨宇思远 5万+

MFC树点击事件中CTreeCtrl::HitTest用法以及uFlag参数的不同值的含义

CTreeCtrl::HitTest的语法结构: ​​​​​​​ HTREEITEM HitTest( CPoint pt, UINT* pFlags = NULL ) const; HTREEITEM HitTest( TVHITTESTINFO* pHitTestInfo ) const;  参数的取值及含义: Value 含...

acoolgiser的博客 4765

使用RepeatModeler和RepeatMasker注释基因组重复序列

重复序列注释有两种常用策略,基于同源序列相似性和基于重复序列结构特征。RepeatMasker是基于同源序列相似性注释序列的常用工具, RepeatModeler可用来从头对基因组的重复序列家族进行建模注释,它的核心组件是RECON和RepatScout。 这篇教程介绍如何使用RepeatModeler从头鉴定基因组的重复序列,之后用RepeatMasker根据自...

xuzhougeng blog 8854

手把手教你用C++和NI-VISA写个简易仪器上位机(附QT工程配置)

本文详细介绍了如何使用C++和QT框架结合NI-VISA驱动开发跨平台仪器控制上位机软件。从Ubuntu环境配置、VISA通信核心架构设计到QT界面与业务逻辑解耦,提供了完整的实战指南和代码示例,帮助开发者快速构建专业级仪器控制程序。

weixin_42522374的博客 274

MFC函数随看随记

POINT pt;     GetCursorPos(&pt);//该函数检取光标的位置,以屏幕坐标表示     UINT uFlags;     ScreenToClient(&pt);  //该函数把屏幕上指定点的屏幕坐标转换成用户坐标。     MapWindowPoints(this, &pt,1);//该函数把相对于一个窗口的坐标空间的一组点映射成相对于另一窗口的坐标空间的一组点

u011365452的专栏 895

MFC界面库BCGControlBar v32.0 - 对话框、仪表盘控件升级

亲爱的BCGSoft用户,我们非常高兴地宣布BCGControlBar Professional for MFC和BCGSuite for MFCv32.0正式发布!新版本支持Windows 11、增强功能区简化模式、改进控件外观等,以及其他新功能和改进。需要最新版的可以点击这里【BCG下载】 BCGControlBar Pro for MFC v32.0正式版下载 对话框和表单 1. 添加了一个新的全局标志globalData.m_bAutoPrepareComboListStyles:如果您希望.

需要界面开发、IDE工具研发中文教程资料的小伙伴,记得私信我~ 1148

树形视图和列表视图中的HitTest

 1、引言 HitTest为命中测试的意思。在使用MFC编写程序的时候,在树形视图以及列表视图中通常会涉及到需要获得鼠标当前位置所对应的元素。这种通过光标坐标位置来获得相应元素项的操作我们称之为命中测试。 在树形视图中使用HTREEITEM类型变量来表示视图中的元素项,而在列表视图中可以直接使用整型变量的编号来表示列表视图中对应的元素项。通过调用...

weixin_30877493的博客 298

UE5导入MetaHuman虚拟头像后,连接live link face,面部表情捕捉出错修正

UE5 利用live link face 驱动meta human面部表情捕捉

m0_53122690的博客 6595

C#上位机实战:Modbus RTU串口通信(CRC校验+超时重发完整实现)

在工业自动化上位机开发中,Modbus RTU是串口通信的事实标准协议,SerialPort是 .NET 平台操作串口的原生类,无需依赖第三方库即可实现基础通信。实际项目中,工控现场存在电磁干扰、串口丢包、设备响应延迟等问题,CRC 数据校验用于保证报文完整性,超时重发机制用于提升通信稳定性。本文从零封装一套可直接落地的 Modbus RTU 通信组件,包含完整的校验算法、超时控制、重发逻辑,并配套 WinForm 演示界面。本文基于 C# 原生SerialPort类,实现了一套生产可用。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 389

MFC API——》WM_NCHITTEST、OnNcHitTest (CPoint point) 点击鼠标时产生的消息

这个消息比较实用也很关键,它代表非显示区域命中测试。这个消息优先于所有其他的显示区域和非显示区域鼠标消息。其中lParam参数含有鼠标位置的x和y屏幕坐标,wParam 这里没有用。 Windows应用程序通常把这个消息传送给DefWindowProc,然后Windows用WM_NCHITTEST消息产生与鼠标位置相关的所有其他鼠标消息。通俗的讲从消息产生消息。 case WM_NCHITTE

liuxiaomao1988的专栏 2655

地图之家总目录

地图之家总目录 cesium示例 leaflet示例

GIS之家家长 1万+

MFC CTreeView学习之右键菜单_获取选中节点的方式HitTest和GetSelectedItem的区别(二)

CPoint pt; UINT nFlags; GetCursorPos(&pt); ::ScreenToClient(m_TreeCtrl->m_hWnd, &pt); HTREEITEM hItem2 = m_TreeCtrl->HitTest(pt, &nFlags); //获取选中节点  注:此处获取的是当前选中的节点 CString sMsg; sMsg.Format(_

Zohar的博客 3140

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

MFC CTreeCtrl获得鼠标点击时的节点值

1、添加图标   HICON icon[10];  icon[0]=AfxGetApp()->LoadIcon(IDI_ICON1);  icon[1]=AfxGetApp()->LoadIcon(IDI_ICON5);  m_imagelist.Create(16,16,ILC_COLOR32| ILC_MASK,7,7);//16*16的图标,7*7为该list最多能容纳的图标数。

lcalqf的专栏 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

CTreeCtrl树控件:如何给MFC中的CTreeCtrl树控件添加右键菜单及使用

1、头文件中: // 可以用来屏蔽操作的消息 virtual BOOL PreTranslateMessage(MSG* pMsg); // 右击树控件的节点弹出菜单 afx_msg void OnRclickTreeObjects(NMHDR* pNMHDR, LRESULT* pResult); //展开树控件某一结点下的所有子节点(递归函数) void ExpandAllTreeI...

欧特GO 5499

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

CTreeCtrl 节点选择问题

一、问题说明          树形控件,单击某个节点弹出相应的对话框 二、问题处理          起先使用了CTreeCtrl的OnSelchangedOperate这个事件,实际操作中出现了问题:          二次单击时对话框不能显示,上网查找资料,才明白二

angellove156的专栏 2096

MFC 树形控件Tree Control,设置选中、焦点注意事项

1.SelectItem()函数设置参数节点被选中 2.利用PostMessage();实现焦点显示和取消。 3.需要注意PostMessage();虽然取消了焦点高亮,但之前被选中的节点仍然处于选中状态,再次点击相同节点,无法出发onselchange()消息;可以通过添加onclick()消息;来触发再次选中。但必须注意仅使用onclick()消息;点击时,无法正确获取选中节点,需要在onclick()消息中添加相同的操作,来实现焦点改变。 4.onDbclick()消息不存在3中问题。 ..

weixin_54623072的博客 3438

CTreeCtrl树控件:如何给MFC中的CTreeCtrl树控件添加复选框及选中状态

1、效果如下: 2、首先需要重写树控件类 CCheckTreeCtrl.h #pragma once typedef enum TREE_STATE { STATE_NONE, STATE_UNCHECKED, STATE_CHECKED, STATE_INTERMEDIATE, STATE_DISABLED }; //当树中某项的选中状态被改变时,会触发NM_CHECKSTATECHANGED消息,数据类型为TREEINFO //ON_NOTIFY(NM_CHECKSTATECHANG

欧特GO 3413

三态树的实现

    三态树节点有三种状态,分别对应:子节点全部选中、子节点部分选中、没有一个子节点被选中。    一.消息响应函数    这里需要对三个消息进行响应,分别是:NM_CLICK、WM_LBUTTONDOWN、WM_KEYDOWN,对应的响应函数分别是OnStateIconClick、OnLButtonDown和OnKeyDown。    1.OnLButtonDown    

孟游的专栏 3213

MFC 中的NMHDR、LPNMTREEVIEW、TVITEM

树控制的数据结构 在使用树控制时需要了解两个个非常重要的数据结构TV_ITEM和TV_INSERTSTRUCT,前一个数据结构是用来表示树控制的树项信息,后一个数据结构是用来定义将树项增加到数据控制中所需要的数据内容。另外,还需要NM_TREEVIEW、 TV_DISPINFO和TV_HITTESTINFO三个数据结构,这几个数据结构的定义方法如下: ①基本数据项结构 typedef str...

acoolgiser的博客 1945

树视列表和树控列表【转】

(一)树控制的主要功能      树控制和视(Tree Control&View)主要用来显示具有一定层次结构的数据项,如资源管理器中的磁盘目录等,以供用户在其中进行各种选择。树控制中的每个数据项包括数据项名      称的文本字符串和用于表示该数据项的图像,每个数据项下

rdc2008的专栏 745

VS2010/MFC 获取ListControl鼠标点击位置

1、引言        HitTest是命中测试的意思。在使用MFC编程的时候,在列表视图中通常会涉及到需要获取鼠标当前位置所对应的元素。这种通过光标位置来获得相应元素项的操作我们称之为命中测试。 2、获取光标位置 网上有人这样处理:    DWORDdwPos = ::GetMessagePos();                                 //获得包含坐标信

明月清风 精进不止 6593

c语言中check函数,c中checkbox的用法

c中checkbox的用法的用法你知道吗?下面小编就跟你们详细介绍下c中checkbox的用法的用法,希望对你们有用。c中checkbox的用法的用法如下:1. 消息事件(1)鼠标点击当前ITEM的CHECKBOX:引发NM_CLICK事件并传递TVHT_ONITEMSTATEICON。(2)鼠标点击当前ITEM的TEXT:引发NM_CLICK事件。(3)鼠标点击新ITEM的CHECKBOX:引发...

weixin_31742871的博客 3930

CTreeCtrl获得鼠标点击时的节点

  原文链接: http://blog.youkuaiyun.com/lcalqf/article/details/21321923 1、添加图标 HICON icon[10]; icon[0]=AfxGetApp()->LoadIcon(IDI_ICON1); icon[1]=AfxGetApp()->LoadIcon(IDI_ICON5); m_imagelist.Create(1...

weixin_34275734的博客 270

VC常用控件用法

chunseye的专栏 2357
上一篇: MFC树点击事件中CTreeCtrl::HitTest用法以及uFlag参数的不同值的含义
下一篇: 吐槽一下博客乱象。。。
acoolgiser
博客等级 码龄11年 179粉丝 146原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值