MDI 範例:示範不使用文件/檢視架構的 MDI

更新:2007 年 11 月

MDI 範例會使用不使用文件/檢視架構的 MFC 的多重文件介面 (MDI) 支援。

如需其他的 MDI 範例說明,請參閱 MDIDOCVW

MDI 也會說明 Microsoft Windows 計時器、CColorDialogCBitmap,以及變更視窗的預設游標。

安全性注意事項:

這個程式碼範例僅供概念說明之用,同時因為範例中的程式碼撰寫並沒有周全的顧及所有安全性問題,所以本範例不適用於實際執行的應用程式或網站中。如果使用者擅自將範例程式碼用於其他意圖而導致連帶事件或重大損害時,Microsoft 將不承擔任何責任。

若要取得範例和指示以便進行安裝:

  • 按一下 Visual Studio [說明] 功能表上的 [範例]。

    如需詳細資訊,請參閱尋找範例檔案

  • 最新版的完整範例清單可從 Visual Studio 2008 範例網頁 (英文) 取得。

  • 您也可以將範例置於電腦硬碟中。根據預設,範例和讀我檔案都會複製到 \Program Files\Visual Studio 9.0\Samples\ 下的資料夾中。對於所有的 Visual Studio Express 版,所有範例都可在線上找到。

建置和執行範例

若要建置並執行 MDI 範例

  1. 開啟 mdi.sln 方案。

  2. 在 [建置] 功能表上按一下 [建置]。

  3. 在 [偵錯] 功能表上,按一下 [啟動但不偵錯]。

MDI 範例應用程式提供一個父視窗,其具有兩個不同類型的 MDI 子視窗:一個是球在其中彈跳的 [Bounce] 視窗;另一個是顯示文字 "Hello, World!" 的 [Hello] 視窗。您可建立每個類型視窗的多個執行個體。

按一下 [File] 功能表上的 [New Bounce] 或 [New Hello] 來建立新的 MDI 子視窗。這兩個 MDI 子視窗都會決定其作用時會顯示哪些功能表。這兩個視窗都有 [Color] 功能表。當您從這個功能表中選擇某個色彩時,便會更新 Hello 文字色彩或彈跳球的色彩。選擇 [Custom] 項目,便會呼叫一個可讓您從中選取特殊色彩的對話方塊。

[Bounce] 視窗還有一個可以讓您選取球在螢幕的跳動速度之 [Speed] 功能表。

如果您將 [Bounce] 視窗最小化,請注意應該不是出現靜態圖示。而是有一顆小球在圖示內跳動。相反地,[Hello] 視窗是一般圖示。

沒有文件和檢視的 MDI

和應用程式精靈所產生的 MDI 應用程式不同,這個範例應用程式並不會使用架構的文件和檢視支援。因此,它不會使用文件樣板;應用程式的 InitInstance 並不呼叫 AddDocTemplate

然而這個應用程式仍然可以使用架構的 MDI 支援之全部功能。CMainFrame 衍生自 CMDIFrameWnd,而 CBounceWndCHelloWnd 則是衍生自 CMDIChildWnd。[視窗] 功能表上的命令 (例如 [並排顯示]) 會在 CMDIFrameWnd 中由架構的預設實作來處理。

雖然 CBounceWndCHelloWnd 都覆寫 Create,但該覆寫並不需要使用架構的 MDI 支援。Create 的覆寫說明如何變更視窗的預設游標和圖示。變更視窗的預設游標或圖示時,需要呼叫 AFXRegisterWndClass,然後在對 Create 的呼叫中傳遞 WNDCLASS 的名稱,以便登錄新的 WNDCLASS

關鍵字

本範例會使用下列關鍵字:

AfxGetInstanceHandle; AfxRegisterWndClass; CBitmap::CreateCompatibleBitmap; CCmdUI::SetCheck; CColorDialog::DoModal; CColorDialog::GetColor; CDC::BitBlt; CDC::CreateCompatibleDC; CDC::DeleteDC; CDC::DrawText; CDC::Ellipse; CDC::FillRect; CDC::GetDeviceCaps; CDC::SelectObject; CDC::SetBkColor; CDC::SetTextColor; CFrameWnd::LoadFrame; CFrameWnd::rectDefault; CGdiObject::DeleteObject; CMDIChildWnd::Create; CMenu::LoadMenu; CWinApp::InitInstance; CWnd::DestroyWindow; CWnd::GetClientRect; CWnd::GetCurrentMessage; CWnd::GetDC; CWnd::Invalidate; CWnd::KillTimer; CWnd::MessageBox; CWnd::OnCreate; CWnd::OnPaint; CWnd::OnSize; CWnd::OnTimer; CWnd::ReleaseDC; CWnd::SetTimer; CWnd::ShowWindow; CWnd::UpdateWindow; GetSysColor; LOWORD; LoadCursor; LoadIcon; MAKEINTRESOURCE; RGB; max; min

注意事項:

部分範例 (包括本範例) 尚未經過改寫,無法反映出目前在 Visual C++ 精靈、程式庫以及編譯器方面的變更,不過還是可以示範如何完成您要進行的工作。

請參閱

其他資源

MFC 範例