首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

怎么获得控件的内部项大小?(比Spy++更深入)

2012-04-02 
如何获得控件的内部项大小?(比Spy++更深入)怎样才能进入窗体(比如菜单,工具栏,任务栏)的内部项,取得其内部

如何获得控件的内部项大小?(比Spy++更深入)
怎样才能进入窗体(比如菜单,工具栏,任务栏)的内部项,取得其内部项的大小。
具体拿系统任务栏来打比方,先使用:
HWND   hwnd=GetWindowFromPoint(pt)//pt为当前鼠标坐标,即鼠标移动到系统任务栏上。
再使用:GetWindowRect(hwnd,rect)   //rect为CRect对象

通过这个方法得到的窗口区域rect只是整个任务栏的区域,不包括最左边的开始菜单的按钮和最右边的托盘区域,而比如此时任务栏上有打开的我的电脑,ie浏览器等窗口时,无法获得这些内部项的窗口。使用Spy++的取窗口功能得到的也是这个效果。是否有更深入的方法得到其内部项的区域大小。以此类推工具栏,菜单栏也是这个情况。

[解决办法]
这些都是自绘的,不好获取子项的Rect。

菜单、工具栏的Rect是固定的,相对比较好获取它们的Rect,
先获取菜单/工具栏的整个Rect,然后通过测试判断每个子项的Rect。

任务栏的子项随着执行程序的多少而变化,每个子项的Rect都有可能变,
我有个意见,不知道可不可行,
先获取任务栏的Rect,再拦截任务栏重绘的消息,从而判断各子项的Rect。

热点排行