VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1202|回复: 5

[求助] 请问CTreeCtrl::GetItemRect 中的 *(HTREEITEM*)lpRect = hItem; 是什么作用呢?

[复制链接]
04_avatar_middle
online_vip 发表于 2016-9-21 19:49:42 | 显示全部楼层 |阅读模式
@Syc
在VC里查了下:
CTreeCtrl::GetItemRect是如下实现的:请问其中的 *(HTREEITEM*)lpRect = hItem; 这句话是什么作用呢?我不明白,请指导下吧,谢谢!

BOOL CTreeCtrl::GetItemRect(HTREEITEM hItem, LPRECT lpRect, BOOL bTextOnly) const
{
        ASSERT(::IsWindow(m_hWnd));
        *(HTREEITEM*)lpRect = hItem;
        return (BOOL)::SendMessage(m_hWnd, TVM_GETITEMRECT, (WPARAM)bTextOnly,
                (LPARAM)lpRect);
}




上一篇:请问在vc里怎么查找某个控件方法是通过发送什么消息以及如何发送实现功能的?
下一篇:运行VC时却出现这个东西,为啥?先谢!
51_avatar_middle
online_admins 发表于 2016-9-21 21:03:24 | 显示全部楼层
这是哪里的代码,看着怎么这么怪
28_avatar_middle
在线会员 发表于 2016-9-21 22:16:00 | 显示全部楼层
*(HTREEITEM*)lpRect = hItem;
        return (BOOL)::SendMessage(m_hWnd, TVM_GETITEMRECT, (WPARAM)bTextOnly,
                (LPARAM)lpRect);              

传递给主窗口的消息TVM_GETITEMRECT 当做第二个参数。  

sendmessage 是等待发送消息者处理完后再继续往下走的。

等主窗口的消息回调函数TVM_GETITEMRECT 处理完后应该 这个lpRect 拿到的应该就是item的RECT了。  

也就是说这个函数并不是获取 ITEM RECT的函数。 仅仅是一个接口,真正获取ITEM的RECT 是 窗口的 TVM_GETITEMRECT 消息回调。 但是消息必须知道你需要获取哪个RECT。 所以就先将 *(HTREEITEM*)lpRect = hItem; 这么捣鼓了。 告诉 TVM_GETITEMRECT 需要处理参数二传进来的 ITEM的 RECT。

这只是一个约定而已。
04_avatar_middle
ico_lz  楼主| 发表于 2016-9-21 23:30:14 | 显示全部楼层
Syc 发表于 2016-9-21 21:03
这是哪里的代码,看着怎么这么怪

这是 winctrl2.cpp 文件里找到的,原来 CTreeCtrl::GetItemRect 就是那些代码实现的。
04_avatar_middle
ico_lz  楼主| 发表于 2016-9-21 23:41:53 | 显示全部楼层
crow_sky 发表于 2016-9-21 22:16
*(HTREEITEM*)lpRect = hItem;
        return (BOOL)::SendMessage(m_hWnd, TVM_GETITEMRECT, (WPARAM)bT ...

感谢感谢,我试了下,把*(HTREEITEM*)lpRect = hItem;注释掉就取不到Item的rect了,有这句话就可以,而且取到的rect结果由lpRect接收。既然是约定就好了。但是 *(HTREEITEM*)lpRect = hItem; 这句话在语法上还是不好理解,等号左边、等号左边与右边数据类型也都不一样,而且又有星号又有括号,不知道该怎么去运算。不过您的指导已经太棒了,非常感谢!
51_avatar_middle
online_admins 发表于 2016-9-22 21:26:45 | 显示全部楼层
yanghbao 发表于 2016-9-21 23:41
感谢感谢,我试了下,把*(HTREEITEM*)lpRect = hItem;注释掉就取不到Item的rect了,有这句话就可以,而且 ...

不过既然这么写的话:*(HTREEITEM*)lpRect = hItem;
就应该是有他的道理,那就说明 hItem 原来就是 RECT 的矩形结构
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-5-19 23:40

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表