书籍:《Visual C++ 2017从入门到精通》的2.4.2 MFC应用程序类型
环境:visual studio 2022
内容:【例2.38】视图窗口的客户区
说明:以下内容大部分来自腾讯元宝。
1.创建一个单文档程序
一个简单的单文档程序-CSDN博客https://blog.csdn.net/qq_20725221/article/details/146395687?spm=1001.2014.3001.55022.新增”主框架窗口的客户区尺寸“和”视图窗口的客户区尺寸“两个子菜单。
3.设置”主框架窗口的客户区尺寸“的ID设置为ID_MAIN_SIZE。
4.为”主框架窗口的客户区尺寸“添加事件处理程序”。
5.类列表为CMainFrame,消息类型设置为COMMAND.
6.在事件处理程序中添加以下代码,获取CMainFrame窗口的大小。
void CMainFrame::OnMainSize()
{// TODO: 在此添加命令处理程序代码CRect rt;CString str;GetClientRect(&rt);str.Format(_T("主窗口客户区的宽度:%d, 高度:%d."), rt.Width(), rt.Height());AfxMessageBox(str);
}
7.运行,点击”主框架窗口的客户区尺寸“菜单,可知宽度为:1422,高度为:758.
8.同理,为”视图窗口的客户区尺寸“菜单添加类列表为“CTest239View”的事件。
9.在事件处理程序中添加以下代码,获取CTest239View窗口的大小。
void CTest239View::OnViewSize()
{// TODO: 在此添加命令处理程序代码CRect rt;CString str;GetClientRect(&rt);str.Format(_T("视图窗口客户区的宽度:%d, 高度:%d"), rt.Width(), rt.Height());AfxMessageBox(str);
}
10.运行,点击”视图窗口的客户区尺寸“,可知宽度为:1418,高度为:708.
11.由二者宽度分别为1422和1418,相差4,这4便是视图窗口左右边框的宽度之和。
12.去除视图窗口边框。
13.重新编译,执行,分别点击”主框架窗口的客户区尺寸“菜单和”视图窗口的客户区尺寸“菜单,宽度一样大了。
14.将视图下的“工具栏”和“状态栏”下的勾都去掉,隐藏工具栏。
14.然后分别点击”主框架窗口的客户区尺寸“菜单和”视图窗口的客户区尺寸“菜单,宽度和高度都一样大了。
相关内容
CRect的简单介绍-CSDN博客https://blog.csdn.net/qq_20725221/article/details/145987429?ops_request_misc=%257B%2522request%255Fid%2522%253A%25222d7e27e790a1888aa8763a5e159be448%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=2d7e27e790a1888aa8763a5e159be448&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-145987429-null-null.nonecase&utm_term=CRECT&spm=1018.2226.3001.4450GetClientRect()和InvalidateRect()的使用-CSDN博客
https://blog.csdn.net/qq_20725221/article/details/146113799?ops_request_misc=%257B%2522request%255Fid%2522%253A%25223621a3d9096ca75d660b43ac68f79493%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=3621a3d9096ca75d660b43ac68f79493&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-146113799-null-null.nonecase&utm_term=GetClientRect&spm=1018.2226.3001.4450