VC++ CTreeCtrl 使用NM_CLICK和TVN_SELCHANGED-程序员宅基地

//这是当CTREECTRL控件点击时NM_CLICK的处理函数
void CDriverSelCtrl::OnNMClick(NMHDR *pNMHDR, LRESULT *pResult)
{
    CPoint curPoint;
    UINT nFlags;
    HTREEITEM hItem;

    GetCursorPos(&curPoint); //当前点坐标
    ScreenToClient(&curPoint); //屏幕坐标转换为TREE内坐标
    hItem = HitTest(curPoint, &nFlags); //坐标是否有ITEM

    if (hItem && (TVHT_ONITEM & nFlags)) //判断是否有HTREEITEM
    {
        this->SelectItem(hItem);//在这里处理点击后的结果
    }
// TODO: 在此添加控件通知处理程序代码 *pResult = 0; }

在这里需要指出 HitTest 函数不但可以检测出是否在item上 也可以检测出 位于 item项的 哪个位置请看 MSDN的说明

Value Meaning
TVHT_ABOVE

Above the client area.

TVHT_BELOW

Below the client area.

TVHT_NOWHERE

In the client area, but below the last item.

TVHT_ONITEM

On the bitmap or label associated with an item.

TVHT_ONITEMBUTTON

On the button associated with an item.

TVHT_ONITEMICON

On the bitmap associated with an item.

TVHT_ONITEMINDENT

In the indentation associated with an item.

TVHT_ONITEMLABEL

On the label (string) associated with an item.

TVHT_ONITEMRIGHT

In the area to the right of an item.

TVHT_ONITEMSTATEICON

On the state icon for a tree-view item that is in a user-defined state.

TVHT_TOLEFT

To the left of the client area.

TVHT_TORIGHT

To the right of the client area.

由此可以更加灵活的使用的CTREECTL控件了

例如下面 例子:

 

 

void CDriverSelCtrl::OnNMClick(NMHDR *pNMHDR, LRESULT *pResult)
{
    CPoint point;
    UINT uFlag;
    BOOL bCheck;


    GetCursorPos(&point);
    CTreeCtrl::ScreenToClient(&point);
    HTREEITEM hTree = CTreeCtrl::HitTest(point, &uFlag);

if (hTree && (TVHT_ONITEMSTATEICON & uFlag))
    {
        CTreeCtrl::SelectItem(hTree);
        bCheck = CTreeCtrl::GetCheck(hTree);

        
    }


    // TODO:  在此添加控件通知处理程序代码
    *pResult = 0;
}

 

 下面是关于 选项改变时的函数

 

//这是当控件的选择发生变化时的处理函数
void CDriverSelCtrl::OnTvnSelchanged(NMHDR *pNMHDR, LRESULT *pResult)
{    

LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
pNMTreeView->itemNew //选中HTREEITEM
pNMTreeView->itemOld //上次选中HTREEITEM
// TODO:  在此添加控件通知处理程序代码
*pResult = 0;
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33857230/article/details/86405540

智能推荐

Vue - 超详细实现文字上下滚动功能效果,类似网站公告文字循环翻滚、中将人员名单公布上下无限滚动效果(支持鼠标移入时悬停停止滚动、接口动态数据渲染、自由DIY样式等)_vue - 超详细实现文字上下滚动功能效果,类似网站公告文字循环翻滚、中将人员名单-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏4次。vue文字上下翻滚,vue实现文字上下滚动,vue公告栏文字上下滚动效果代码,vue2如何做类似网站公告的文字上下翻滚动,vue怎么写文字上下来回交替滚动功能,vue2公告栏上下滚动,vue实现公告栏文字上下滚动效果,vue实现多个滚动公告,鼠标移入停止滚动,Vue中实现文字向上滚动的动画效果_vue2文字向上循环滚动,Vue2写文本上下无限滚动以及文本左右无限滚动的效果,vue2如何实现文字上下滚动跑马灯效果,vue2实现文字滚动效果,一条滚动完毕下一条从下面往上滚动,vue2动态文字滚动公告代码,vue_vue - 超详细实现文字上下滚动功能效果,类似网站公告文字循环翻滚、中将人员名单

centos7-x86_64 kernel 4.18 安装_centos7 kernel 4.18-程序员宅基地

文章浏览阅读1.8k次。#.下载 4.18 rpm合集压缩包wget https://gitee.com/ysj001/public/raw/master/kernel-4.18.16.tar.gz# 解压tar zxvf kernel-4.18.16.tar.gz#安装yum install -y *rpm_centos7 kernel 4.18

爬虫爬取小说_番茄小说爬取-程序员宅基地

文章浏览阅读1.8k次,点赞12次,收藏11次。通过对网页结构分析,发现文字有一些超出了编码范围,于是可以推断出,字体暗藏玄机,找到网页字体文件后,下载到本地,用Fontforge打开,发现只从e3e8到e55b有文字,所以可以得出番茄使用了两套字体加载文本内容,当字符超出一定范围,就使用另一种。通过观察层级结构,我们使用xpath语法 //div[@class=“muye-reader-content noselect”]/div//p 获得文章内容,到此,所以需要的信息已经爬完了,只需要处理循环逻辑,保存文件就行。获取内容如图,具有乱码。_番茄小说爬取

Lyx缺少Document class_lyx模板都不可用-程序员宅基地

文章浏览阅读336次。Lyx缺少必要的document class_lyx模板都不可用

ios9/sdk9/xcode7/iphone6s(+)适配 -程序员宅基地

文章浏览阅读161次。 ios9 企业级分发iOS9网络适配_ATS为了强制增强数据访问安全,iOS9 默认会把所有从NSURLConnection 、 CFURL 、 NSURLSession发出的 HTTP 请求,都改为 HTTPS 请求:iOS9.x-SDK编译时,默认会让所有从NSURLConnection 、 CFURL 、 NSURLSession发出的 HTTP 请求统一采用TLS 1...

java Spring Boot整合jwt实现token生成_springboot项目生成token-程序员宅基地

文章浏览阅读1k次。这里 我是直接不管了 不管他传什么进来 只要是符合我users类格式的 我就算他登录通过 通过getid生成一个token 返回回去。然后 这里 我们加一个属性类 用于用户登录使用 这里 我就搞简单一点 直接 一个id 一个name了。这里需要注意的是 如果你想通过id生成token 那么 你的id必须是个字符串。因为登录接口要用 JwtUtils 所以 最好建在登录接口的类的同目录下。然后 我们接口所在的类 要条件装配好我们用户的属性类 也就是 users。_springboot项目生成token

随便推点

[RK3288][Android6.0] 调试笔记 --- pmu(rk818)寄存器读写【转】-程序员宅基地

文章浏览阅读174次。本文转载自:http://blog.csdn.net/kris_fei/article/details/76919134Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92rk的pmu模块只提供了每次单个寄存器的读写,驱动提供了这个节点供使用:/sys/rk818/rk818_test 举例:读取:echo r 0x23 ..._mtk_perf_plus

【机器学习】高斯回归过程GPR_高斯过程回归 kriging-程序员宅基地

文章浏览阅读418次。我是知识的搬运工_高斯过程回归 kriging

[Win32SDK基本]ListView Controls(1)Report (details) View 详解_syslistview32l 换行-程序员宅基地

文章浏览阅读7k次,点赞5次,收藏16次。本文由CSDN用户zuishiko所作,转载请注明出处:http://blog.csdn.net/zuishikonghuan/article/details/46872885老规矩,先上MSDN:https://msdn.microsoft.com/en-us/library/windows/desktop/bb774737(v=vs.85).aspx其实还是子窗口,static那节_syslistview32l 换行

QT 网络编程(一)-程序员宅基地

文章浏览阅读1.1k次,点赞38次,收藏20次。Qt 网络编程相关

软工视频总结-程序员宅基地

文章浏览阅读614次。经过十天的时间,对软工视频进行一下简单的总结。软工视频总共有24讲,一讲大约50分钟。前3章介绍软工视频的历史。 第 6 讲 1.需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决,目标系统的“做什么”的问题。 2.问题识别的另一项工作是建立分析所需要的通信途径,以保证能顺利地对问题进行分析。

python bad magic number_科学网-python反编译软件推荐uncompyle6-Bad magic number in .pyc-陈照强的博文...-程序员宅基地

文章浏览阅读2.6k次。背景从友方那边获得了pyc文件,但是由于他当时用的是python2.6编译的,而现在python2.6几乎被淘汰掉了,安装了python2.7 等其他版本无法运行该pyc文件,报错 RuntimeError: Bad magic number in .pyc file 。安装了python 2.6 后,运行该文件不报错,但是依赖模块openbabel,openbabel在python2.6中安装稍..._bad magic number in .pyc file