如何获取窗体的屏幕坐标

yanjinbin 2011-10-19 12:00:31
获取窗体的屏幕坐标:

开始在CtestDlg::OnInitDialog()函数中折腾半天没获取到,后面才知道应该到CtestDlg::OnPaint()中才能正确获取.
但是问题,我的获取只需要执行一次,但OnPaint做下动作就刷新(如切换下窗体),有没有其他的事件,让我即可获取到屏幕坐标,又不会多次执行啊.
...全文
216 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanjinbin 2011-10-19
  • 打赏
  • 举报
回复
3楼,这样判断是可以.
但我还是希望能找到这样一个窗体事件或窗体消息达到这种效果.
yanjinbin 2011-10-19
  • 打赏
  • 举报
回复
3楼,这样判断是可以.
但我还是希望能找到这样一个窗体事件或窗体消息达到这种效果.
yayafu 2011-10-19
  • 打赏
  • 举报
回复
判断下rect是否有效啊,
初始化rect各元素为0
if(rect.left==0 && rect.right == 0) //没获取就获取,否则不获取
{
GetClientRect(&rect);
ScreenToClient(rect);
}
很简单
lgstudyvc 2011-10-19
  • 打赏
  • 举报
回复
CRect rect;
GetClientRect(&rect);

ScreenToClient(rect);
jiuchang 2011-10-19
  • 打赏
  • 举报
回复
GetWindowRect() 得到的是在屏幕坐标系下的RECT(即以屏幕左上角为原点)

GetClientRect() 得到的是在客户区坐标系下的RECT(即以所在窗口左上角为原点,去掉了标题栏计算,仅仅是个大小,返回值的左上角永远为0,0)

ScreenToClient() 就是把屏幕坐标系下的RECT坐标转换为客户区坐标系下的RECT坐标。

如果需要获得窗体在屏幕上的位置,使用GetWindowRect

如果需要获得窗体的大小,使用GetClientRect

15,979

社区成员

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

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