对话框的最大化
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)
自己测试的,没有找到官方文档说明。若有博友找到请在评论区告诉我 😃
本文通过实例探讨了MFC中对话框和单文档界面最大化后的尺寸变化规律,发现窗口最大化后的尺寸为屏幕尺寸减去任务栏高度后再各边增加8像素。

5119

被折叠的 条评论
为什么被折叠?



