对话框的最大化
MFC新建一个基于对话框的程序,资源里添加一个按钮,GetWindowRect,双击该按钮,添加响应函数
void CtestDialogDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CRect rc;
CString str;
this->GetWindowRect(rc);
str.Format(_T("GetWindowRect:(%d,%d,%d,%d)"), rc.left, rc.top, rc.right, rc.bottom);
AfxMessageBox(str);
}
最大化对话框,点击该按钮,如图:
本机的屏幕分辨率是1366*768,任务栏在下面高度是40,所以最大化以后的GetWindowRect的大小是:(0,0,1366,728) --> InflactRect(8,8) 放大8 --> (-8,-8,1374,736)
单文档的最大化
在view视图里截获消息void CSDI2View::OnGetwindowrect()后,就不在响应mainframe里对应的消息了。void CMainFrame::OnGetwindowrect()。
只有去掉view里的,才能响应到mainframe里的。
最大化以后,MainFrame的WindowRect是 (-8,-8,1374,736),与对话框最大化后一样。
总结
窗口最大化以后,GetWindowRect的大小是 在屏幕大小rect去掉任务栏rect后,放大8个像素,即 InflateRect(8,8)
自己测试的,没有找到官方文档说明。若有博友找到请在评论区告诉我 😃