VC++ CTreeCtrl 使用NM_CLICK和TVN_SELCHANGED
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 = ;
}
在这里需要指出 HitTest 函数不但可以检测出是否在item上 也可以检测出 位于 item项的 哪个位置请看 MSDN的说明
| Value | Meaning |
|---|---|
|
Above the client area. |
|
Below the client area. |
|
In the client area, but below the last item. |
|
On the bitmap or label associated with an item. |
|
On the button associated with an item. |
|
On the bitmap associated with an item. |
|
In the indentation associated with an item. |
|
On the label (string) associated with an item. |
|
In the area to the right of an item. |
|
On the state icon for a tree-view item that is in a user-defined state. |
|
To the left of the client area. |
|
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 = ;
}
下面是关于 选项改变时的函数
//这是当控件的选择发生变化时的处理函数
void CDriverSelCtrl::OnTvnSelchanged(NMHDR *pNMHDR, LRESULT *pResult)
{ LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
pNMTreeView->itemNew //选中HTREEITEM
pNMTreeView->itemOld //上次选中HTREEITEM
// TODO: 在此添加控件通知处理程序代码
*pResult = ;
}
VC++ CTreeCtrl 使用NM_CLICK和TVN_SELCHANGED的更多相关文章
- 实现CTreeCtrl父子节点的联动选择
本文实现了下面的功能: 当选中父节点时, 其所有子节点全部选中. 当取消选中父节点时, 其所以子节点全部取消选中. 点击子节点时, 根据子节点与其兄弟节点的选中状态, 自动设置父节点的选中状态. 通过 ...
- C++ 学习资料搜寻与学习(第一期)(未完待续)
一.图形图像类 [Visual C++]vs2008/2005正确打开vs2010所创建项目的几种方法 jlins 2012-04-12 14:38 [Visual C++]关于无法打开包括文件:“S ...
- VC/MFC ListCtrl 控件功能使用汇总(转)
以下未经说明,listctrl默认view 风格为report 相关类及处理函数 MFC:CListCtrl类 SDK:以 “ListView_”开头的一些宏.如 ListView_InsertCol ...
- vc常用类总结(转载)
常用类 CRect:用来表示矩形的类,拥有四个成员变量:top left bottom right.分别表是左上角和右下角的坐标.可以通过以下的方法构造: CRect( int l, int t, i ...
- Vc++ 控件用法总结之List Control
1.新建对话框MFC,在对话框上放一个ListCtrl ID:IDC_PATH View:Report 2.为ListCtrl添加变量 右击->添加变量m_wndPath 3.找到OnInitD ...
- VC中动态添加控件
VC中动态添加控件 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件: 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立一个 ...
- MFC中树控件CTreeCtrl的用法
树形控件可以用于树形的结构,其中有一个根接点(Root)然后下面有许多子结点,而每个子结点上有允许有一个或多个或没有子结点.MFC中使用CTreeCtrl类来封装树形控件的各种操作.通过调用 BOOL ...
- CTreeCtrl点击获得选中项
相应TVN_SELCHANGED可以得到选中的项,在相应函数内如下: LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(p ...
- VC中实现带有背景位图的树型控件
当前许多应用程序都在使用树型控件时为其添加了背景位图,增强的控件的魅力,然而对于Visual C++编程爱好者来说,使用Visual C++MFC提供的树型控件(CTreeCtrl)本身就是一个难点, ...
随机推荐
- 解决R速度太慢问题
R的速度慢一直被人诟病,最近做一个比较大的dataset的分析,跑得实在太慢,发现症结是R的data frame的index太慢: 以下为测试: gene_list = 1:100000 eQTL_m ...
- jquery.cookie() 方法的使用(读取、写入、删除)
一个轻量级的cookie 插件,可以读取.写入.删除 cookie. jquery.cookie.js 的配置 首先包含jQuery的库文件,在后面包含 jquery.cookie.js 的库文件. ...
- java Scanner
public static void main(String[] args) throws IOException { System.out.print("Enter a number:&q ...
- How do you build a database?
在reddit上看到的一篇讲解数据库实现的文章,非常有意思,在这里记录一下. 回答者technical_guy: Its a great question, and deserves a long a ...
- libvirt
http://libvirt.org/index.html libvirt supports: The KVM/QEMU Linux hypervisor The Xen hypervisor on ...
- android国际化操作
1.简单介绍 我们知道在java中通过.properties文件来配置资源文件,一般用的有中文message_zh_CN.properties和英文message_en_US.properties两个 ...
- java比较两个字符串是否相等
从c 到c++ 到 c# 到 JavaScript 判断两个字符串是否相等,用==号都可以.奇葩的java怎么可以只能用equals()这个函数.只是因为String是引用类型吗??!!哭笑不得.. ...
- SQL SERVER:使用工具观察与分析数据库中锁信息
SQL SERVER 2005可以通过Microsoft SQL Server Management Studio的“管理–>活动监视器”–>“右键”–>“进程信息”,这里呈现连接. ...
- java程序打包成jar文件,使用到第三方jar包
1.右击工程选择Export—>选择JAR file—>选择NEXT,如下图所示 2.选择需要打包的工程,并且选择存放目录,我这放在 E:\jartest 目录下,然后点击NEXT,如下图 ...
- 关于http协议详解
Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前 ...