实战经验:CTreeCtrl.GetItemPartRect的用法
作者:BlogUpdater |
时间:2018-09-09 |
浏览:2577 |
评论已关闭 条评论
在一次CTreeCtrl的使用过程中,我需要自行绘制树控件结点前面的加减号按钮。主要碰到的难题是如何在合适的位置进行绘制。
一直在网络上寻找各种答案,直到碰到了GetItemPartRect这个API。真的有一种众里寻他千百度的感觉。
今天就来讲一讲这个API的用法。首先摘抄MSDN的部分:
GetItemPartRect:
Retrieves the bounding rectangle for a specified part of a specified item in the current tree-view control.
API描述:
GetItemPartRect是CTreeCtrl的一个方法,主要用于获取指定结点的一个特殊部分的区域,这里的特殊部分,可以是结点前面的加减号,也可以是结点图标,还可以是结点文字。但是当前版本只支持获取树结点前面的加减号按钮的区域。
再来看看参数列表:
BOOL GetItemPartRect(HTREEITEM hItem, int nPart, LPRECT lpRect)const;
第一个参数:
要获取的树结点句柄。
第二个参数:
指明获取的是树结点的哪个部分的区域,只能设置为:TVGIPR_BUTTON。
第三个参数:
一个指向RECT结构体的指针,当API成功执行后,会在此指针指向的结构体中填入指定部分的区域。
示例代码:
CRect rcItem; m_treeCtrl.GetItemPartRect(hItem, TVGIPR_BUTTON, &rcItem); m_treeCtrl.GetDC()->Draw3dRect(&rcItem, RGB(255, 0, 0), RGB(0, 0, 255));
总结
虽然GetItemPartRect目前只能得到加减号按钮的区域,但是对于树控件的自绘来说,还是很有用的。
如需转载,请注明来自:Topomel Box
相关推荐
- 谈谈任务管理器的精简模式
- Posted on 01月21日
- 关于WinMain函数的第二个参数解释
- Posted on 04月08日
- 第一次肉眼可见的对C++20 Ranges的支持
- Posted on 07月18日
- 全局可写的文件实际上是一个安全漏洞
- Posted on 12月28日
评论已关闭。