MDI應用的組成使用AppWizard生成壹個MDI項目T(不支持OLE),AppWizard創建壹系列文件形成應用框架。
這些文件分為四類:頭文件(。h)、實現文件(。cpp)、資源文件(。rc)、模塊定義文件(。def),等等。
組成應用程序的對象。
圖1-1說明了應用程序的結構,箭頭表示信息流方向。
五個類派生自CWinApp、CDocument、CView、CMDIFrameWnd和CMDIChildWnd。這五個類的例子是應用程序對象、文檔對象、可視對象、CMainFrame窗口對象和文檔框架窗口對象。
主框架窗口包含壹個視窗、壹個工具欄和壹個狀態欄。
這些類或對象解釋如下。
(1)申請
application類派生自CWinApp。
壹個基於框架的應用必須有且只有壹個應用對象,負責應用的初始化、運行和結束。
(2)邊框窗口
如果是SDI應用,則從CFrameWnd類派生出邊界窗口類,邊界窗口的MDIClient直接包含查看窗口;如果是MDI應用,邊框窗口類是從CMDIFrameWnd類派生的,邊框窗口的客戶子窗口(MDIClient)直接包含文檔邊框窗口。
如果希望支持工具欄和狀態欄,派生的邊界窗口類還應該添加CToolBar和CStatusBar類型的成員變量,並在OnCreate消息處理程序中初始化這兩個控制窗口。
邊框窗口用於管理文檔邊框窗口、視圖窗口、工具欄、菜單、快捷鍵等。,並協調半模式狀態(如上下文幫助(SHIFT+F1模式)和打印預覽)。
(3)文檔邊框窗口
文檔邊框窗口類派生自CMDIChildWnd類,MDI應用程序使用文檔邊框窗口來包含視區。
(4)文件
document類派生自用於管理數據的CDocument類。數據的變更和訪問是通過文檔來實現的。
視口通過文檔對象訪問和更新數據。
(5)取決於
可視化類是從CView或其派生類中派生的。
視頻和文檔鏈接在壹起,在文檔和用戶之間起中介作用,即文檔的內容顯示在屏幕上,用戶的輸入轉化為對文檔的操作。
(6)文檔模板
文檔模板類壹般不需要派生。
MDI應用程序使用多文檔模板類CMultiDocTemplate;SDI應用程序使用單個文檔模板類CSingleDocTemplate。
應用程序通過文檔模板類對象管理上述對象(應用程序對象、文檔對象、主邊界窗口對象、文檔邊界窗口對象和可視對象)的創建。
組成應用程序的對象之間的關系。
在這裏,所涉及的MFC類的繼承或派生關系可以用圖的形式直觀地表達出來,如圖1-2所示。
圖1-2所示的類都是從CObject類派生出來的;所有處理消息的類都是從CCmdTarget類派生的。
如果是多文檔應用,文檔模板使用CMultiDocTemplae,主框架窗口派生自CMdiFarmeWnd,包含工具欄、狀態欄和文檔框架窗口。
文檔框架窗口派生自CMdiChildWnd,文檔框架窗口包含視圖,這些視圖派生自CView或其派生類。
組成應用程序的文件
通過上面的分析,我們可以知道AppWizard生成的MDI框架程序的內容,以及定義和實現的類。
接下來,從文件的角度,我們將考察AppWizard生成了哪些源文件,這些文件的作用是什麽。
表1-1列出了AppWizard生成的頭文件,表1-2列出了AppWizard生成的實現文件及其與頭文件的包含關系。