如何获得窗体中控件所处的区域?

陈丙雷 2008-03-24 04:09:16
我在窗体中有一个Static控件,我想得到这个控件在窗体中的Rectange区域。
如何得到?谢谢各位兄弟姐妹指点。
...全文
49 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
陈丙雷 2008-03-25
  • 打赏
  • 举报
回复
然后我就是对这个Static控件进行填充颜色,使用如下语句操作:

CBrush cBrushTmpClr( RGB(0, 255, 0) );
dc.SelectObject( &cBrushTmpClr );
dc.Rectangle( &rectTmpClr );

上述语句是在OnPaint函数内的。
陈丙雷 2008-03-25
  • 打赏
  • 举报
回复
多谢兄弟们,问题解决!
ahuisafe 2008-03-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hityct1 的回复:]
GetDlgItem(IDC_STATIC_TMPCLR)->ScreenToClient(&rectTmpClr);
应该改成:
ScreenToClient(&rectTmpClr);

另外,ScreenToClient(&rectTmpClr); 是会更改rectTmpClr的,你还有其他操作吗?
[/Quote]
hityct1 2008-03-24
  • 打赏
  • 举报
回复
GetDlgItem(IDC_STATIC_TMPCLR)->ScreenToClient(&rectTmpClr);
应该改成:
ScreenToClient(&rectTmpClr);

另外,ScreenToClient(&rectTmpClr); 是会更改rectTmpClr的,你还有其他操作吗?
陈丙雷 2008-03-24
  • 打赏
  • 举报
回复
楼上的兄弟,我使用ScreenToClient转换之后,矩形跑到左上角去了。
无论我当初将这个控件放在何处,都是这样。
请问为什么会出现这种情况?

我是用下面的语句转换的。
GetDlgItem(IDC_STATIC_TMPCLR)->GetWindowRect(&rectTmpClr);
GetDlgItem(IDC_STATIC_TMPCLR)->ScreenToClient(&rectTmpClr);
cnzdgs 2008-03-24
  • 打赏
  • 举报
回复
GetWindowRect可以得到屏幕坐标,如果需要得到窗口内的相对坐标,可以用ScreenToClient转换一下。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧