MDI子視窗與典型的框架視窗非常相似,唯一的區別在於MDI子視窗是出現在MDI框架視窗中,而不是在桌面上。MDI子視窗沒有自己的選單條,不過它可以共享MDI框架視窗。框架自動更改MDI框架的選單,用於代表當前活動的MDI子視窗。
為了為套用創建有用的MDI子視窗,需要從CMDIChildWnd派生類。
為派生類增添成員變數,從而為套用存儲指定的數據。實現訊息處理的成員函式,並在派生類中實現訊息映射,以便於指出當訊息傳遞給視窗後,將發生什麼事情。
構造MDI子視窗有三種途徑:
· | 使用Create函式直接構造。 |
· | 使用LoadFrame函式直接構造。 |
· | 通過文檔模板直接構造。 |
使用Create成員函式,用於傳遞作為即時參數的框架創建參數。
LoadFrame需要的參數比Create少,不過,它需要資源更多的預設值,包括框架的標題、圖示、加速表和選單。為了LoadFrame函式的使用,所有的資源必須有相同的資源ID號(例如, IDR_MAINFRAME)。
當CMDIChildWnd對象包含視圖或文檔時,它們都是被框架直接創建的,而不是被編程者創建的。CDocTemplate 對象含有框架的創建,視圖的創建以及視圖與適當文檔的聯繫。CDocTemplate結構的參數指定了涉及到的三個類(文檔,框架,視圖)的CRuntimeClass對象。
CRuntimeClass對象被框架所使用,用於用戶指定後動態地創建新框架(例如使用File New命令或MDI視窗New命令)。
派生於CMDIChildWnd的框架視窗必須由DECLARE_DYNCREATE來聲明,以便於RUNTIME_CLASS機制正常工作。
CMDIChildWnd類從CFrameWnd類中繼承了大部分預設用法。如果需要了解這些功能的詳細情況,請參考CFrameWnd類的描述。
CMDIChildWnd擁有下列額外的功能:
· | 與CMultiDocTemplate類相關聯,來自於同一文檔模板的多個CMDIChildWnd 對象共享同一個選單,並存儲Windows的系統資源。 |
· | 當前活動的MDI子視窗選單完全替換了MDI框架視窗的選單。如果要了解與MDI框架視窗有關的MDI子視窗函式的更多例子,請參閱CMDIFrameWnd類的說明。 |
#include <afxwin.h>
CMDIChildWnd類的成員
構造函式
CMDIChildWnd | 構造一個CMDIChildWnd對象 |
初始化
Create | 創建與CMDIChildWnd對象相關聯的Windows MDI子視窗 |
操作
MDIDestroy | 刪除MDI子視窗 |
MDIActivate | 激活MDI子視窗 |
MDIMaximize | 使MDI子視窗最大化 |
MDIRestore | 將MDI子視窗從最大化狀態或最小化狀態恢復為原始尺寸 |
GetMDIFrame | 返回父親MDI客戶視窗的MDI框架 |