資源描述:
《visual c++第06章 框架窗口、文檔和視圖》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、第6章框架窗口、文檔和視圖盡管窗口、文檔和視圖是MFC的基礎,但可能也是最不容易理解的部分,因為其概念比傳統(tǒng)編程所需要的Windows函數(shù)更強一些,因此,須在本章做進一步詳細討論框架窗口、文檔和視圖的方法和技巧。6.1框架窗口分兩類:一是應用程序主窗口,另一類是文檔窗口。6.1.1主窗口和文檔窗口主窗口(或稱主框架窗口)是應用程序直接放在桌面(DeskTop)上的那個窗口,每個應用程序只能有一個窗口,主窗口的標題欄上往往顯示應用程序的名稱。主窗口類的源文件名是MainFrm.h和MainFrm.cpp,其類名是CMainFr
2、ame。單文檔SDI程序主窗口類是從CFrameWnd派生來的。多文檔MDI程序主窗口類是從CMDIFrameWnd派生的。如果應用程序中還有工具欄(CToolBar)狀態(tài)欄(CStatusBar),那么在CMainFrame類還含有表示工具欄和狀態(tài)欄的成員變量m_wndToolBar和m_wndStatusBar,并在CMainFrame的OnCreate函數(shù)中進行初始化。文檔窗口對于SDI程序來說,它和主窗口是一致的,即主窗口就是文檔窗口;對于MDI程序,文檔窗口是主窗口的子窗口。見書244頁圖6.1所示。文檔窗口一般都
3、有相應的可見邊框,他的客戶區(qū)(初了窗口標題欄、邊框外的區(qū)域)是由相應的視圖來構成的,可以說視圖是文檔窗口內的子窗口。文檔窗口時刻跟蹤當前處于活動狀態(tài)的視圖的變化,并將用戶或系統(tǒng)產生的命令消息傳遞給當前活動視圖。而主窗口負責管理各個用戶交互對象(包括菜單、工具欄、狀態(tài)欄以及加速鍵)并根據(jù)用戶操作相應地創(chuàng)建或更新文檔窗口及其視圖。在MDI應用程序中,MFCAppWizard創(chuàng)建的文檔子窗口類的源代碼文件是ChildFrm.h和ChildFrm.cpp,其類名是CChildFrame,它是從CMDIChildWnd派生的。6.1.
4、2窗口風格的設置窗口的風格決定了窗口的外觀及功能,用戶通過風格的設置增加或減少窗口中所包含的功能,這些功能一般都是由系統(tǒng)內部定義的,不需要用戶去編程實現(xiàn)。窗口風格可以通過MFCAppWizard來設置,也可以在主窗口或文檔窗口類的PreCreateWindow函數(shù)中修改CREATESTRUCT結構,或是可以調用CWnd類的成員函數(shù)ModifyStyle和ModifyStyleEx來更改。1、窗口風格通常以WS_為前綴和擴展以WS_EX_為前綴兩種形式;這兩種形式的窗口風格可在函數(shù)CWnd::Create(只能指定窗口的一般風
5、格)或CWnd::CreateEx(可同時支持以上兩種風格),對于控件和對話框這樣的窗口來說,它們的窗口風格可直接通過其屬性對話框來設置。常見的一般窗口風格如下所示:(書245頁表6.1)WS_BORDER窗口含有邊框WS_CAPTION窗口含有標題欄(它意味著還具有WS_BORDER風格)但它不能和WS_DLGFRAME組合WS_CHILD創(chuàng)建子窗口,它不能和WS_POPUP組合WS_CLIPCHILDREN在父窗口范圍內裁剪子窗口,它通常在父窗口創(chuàng)建時指定WS_CLIPSIBLINGS裁剪相鄰子窗口,也就是說,具有此風格
6、的子窗口和其他子窗口重疊的部分被裁剪,它只和WS_CHILD組合WS_DISABLED窗口最初時是禁用的WS_DLGFRAME窗口含有雙邊框,但沒有標題WS_GROUP此風格被控件組中第1個控件窗口指定。用戶可在控件組的第1個和最后1個控件中用方向鍵來選擇WS_HSCROLL窗口最初時處于最大化WS_MAXIMIZEBOX在窗口的標題欄上含有”最大化”按鈕WS_MINIMIZE窗口最初處于最小化,他只和WS_OVERLAPPED組和WS_MINIMIZEBOX在窗口的標題欄上含有”最小化”按鈕WS_OVERLAPPED創(chuàng)建覆
7、蓋窗口,一個覆蓋窗口通常有一個標題和邊框WS_OVERLAPPEDWINDOW創(chuàng)建一含有WS_OVERLAPPED、WS_CAPTION、WS_SYSMENU、WS_THICKFRAME、WS_MINIMIZEBOX和WS_MAXIMIZEBOX風格的覆蓋窗口WS_POPUP創(chuàng)建一彈出窗口,它不能和WS_CHILD組合,只能用CreateWx函數(shù)指定WS_POPUPWINDOW創(chuàng)建一含有WS_BORDER、WS_POPUP和WS_SYSMENU風格的彈出窗口。當WS_CAPTION和WS_POPUPWINDOW風格組合時才能
8、使系統(tǒng)菜單可見。WS_SYSMENU窗口的標題欄上含有系統(tǒng)菜單框,它僅用于含有標題的窗口WS_TABSTOP用戶可以用于TAB鍵選擇控件組中的下一個控件WS_THICKFRAME窗口含有邊框,并可調整窗口的大小WS_VISIBLE窗口最初是可見的WS_VSCROLL窗口含有垂直滾動條除了這