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)本身就是一个难点, ...
随机推荐
- 新冲刺Sprint3(第三天)
一.Sprint会议 更新商品价格.商品描述功能已经完成了,搜索商品功能也正在准备了. 以下是部分功能真机测试下的效果图: 二.Sprint周期 看板: 燃尽图:
- mac 下安装 lua5.3 + cjson
1.lua 5.3的安装 直接去官网下载 http://www.lua.org/ftp/lua-5.3.3.tar.gz make macosx sudo make install 2.CSJON 编 ...
- python笔记集合
1.win_64下编译pyd(编译器用的tdm-gcc-5.1) gcc test.c -shared -Ic:\Python27\include -Lc:\Python27\libs -lpytho ...
- 如何理解andriod中的View和framelayout两个概念
View 和 FrameLayout 是包含关系,FrameLayout 继承自ViewGroup,然后继承自View. FrameLayout是一种 ViewGroup,可以在里面放其它的View, ...
- 【redis】 redis 创建集群时,Waiting for the cluster to join.... 一直等待
redis 搭建集群时,一直join.... ./redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1: ...
- python---生成随机密码
#简短地生成随机密码,包括大小写字母.数字,可以指定密码长度 from random import choice import string #python3中为string.ascii_letter ...
- Paxos一致性算法
分布式系统的整体思路:协调者与参与者 分布式系统中,每个节点可以知道自己在事务操作过程中是成功还是失败,但无法获取其他节点的操作结果,所以就不知道这个事务是否在所有机器上全都执行成功,所以需要引入一个 ...
- OGNL语言
OGNL 一.概述 以下内容摘自Ognl的官网: OGNL stands for Ob ...
- 关于JS中的JSON
早期,一般是使用XML作为互联网上传输结构化数据的,但由于它解析麻烦,字符冗长,因此被轻量级的JSON所逐渐替代.JSON是JavaScript的一个严格子集,利用了JavaScript中一些模式来表 ...
- CCF NOI系列活动
NOI-全国青少年信息学奥林匹克竞赛全国青少年信息学奥林匹克竞赛(NOI)是国内信息学领域内面向中学生的最高水平的大赛,每省派经选拔产生的选手(其中一名是女选手)参加,NOI每年在不同的省市举行. N ...