GetWindowRect----ScreenToClient
GetClientRect-------ClientToScreen
看起来容易,但是总是不能理解。
今天写了个小程序测试了一下,最终搞明白了。
代码很简单:
void CTestDialogDlg::OnBnClickedButton1()
{
CRect rcWindow;
CRect rcClient;
GetClientRect(&rcClient);// top = 0, left = 0, right = 480, bottom = 325;
GetWindowRect(&rcWindow); // top = 319, left = 397, right = 883, bottom = 676;
ScreenToClient(rcWindow);// top = -29, left = -3, right = 483, bottom = 328;
MoveWindow(rcWindow);
}
初始化的时候显示一模态对话框,对话框的客户区是中间那块灰色的部分,左右边框蓝色的部分也占用3个像素。
当我单击Button1的时候,窗口变成了下图所示的样式
通过计算发现,结果和最上面代码的注释部分写的一样。
总结下来发现,对于上例而言,ScreenToClient就是将窗口的客户区的(0,0)点移动到桌面的左上角(0,0)点。