書籍:《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