获取窗体的屏幕坐标:开始在CtestDlg::OnInitDialog()函数中折腾半天没获取到,后面才知道应该到CtestDlg::OnPaint()中才能正确获取.
但是问题,我的获取只需要执行一次,但OnPaint做下动作就刷新(如切换下窗体),有没有其他的事件,让我即可获取到屏幕坐标,又不会多次执行啊.
但是问题,我的获取只需要执行一次,但OnPaint做下动作就刷新(如切换下窗体),有没有其他的事件,让我即可获取到屏幕坐标,又不会多次执行啊.
GetClientRect() 得到的是在客户区坐标系下的RECT(即以所在窗口左上角为原点,去掉了标题栏计算,仅仅是个大小,返回值的左上角永远为0,0)
ScreenToClient() 就是把屏幕坐标系下的RECT坐标转换为客户区坐标系下的RECT坐标。如果需要获得窗体在屏幕上的位置,使用GetWindowRect如果需要获得窗体的大小,使用GetClientRect
GetClientRect(&rect);ScreenToClient(rect);
初始化rect各元素为0
if(rect.left==0 && rect.right == 0) //没获取就获取,否则不获取
{
GetClientRect(&rect);
ScreenToClient(rect);
}
很简单