MDI-Beispiel: Demonstriert MDI ohne die Verwendung der Doc/View-Architektur

Aktualisiert: November 2007

Das MDI-Beispiel greift auf die MDI-Unterstützung (Multiple Document Interface) von MFC zurück, ohne die Dokument-/Ansichtarchitektur zu verwenden.

Ein weiteres MDI-Beispiel finden Sie unter MDIDOCVW.

MDI demonstriert außerdem den Microsoft Windows-Zeitgeber, CColorDialog, CBitmap und das Ändern des Standardcursors eines Fensters.

Sicherheitshinweis:

Dieser Beispielcode dient dazu, ein Konzept zu veranschaulichen. Er sollte nicht für Anwendungen oder Websites verwendet werden, da dieser Code unter Umständen nicht die sicherste Codierungstechnik darstellt. Microsoft übernimmt keine Haftung für beiläufig entstandene Schäden oder Folgeschäden, falls der Beispielcode nicht bestimmungsgemäß verwendet wird.

So rufen Sie Beispiele und Anweisungen für ihre Installation ab

  • Klicken Sie in Visual Studio im Menü Hilfe auf Beispiele.

    Weitere Informationen finden Sie unter Suchen von Beispieldateien.

  • Die neueste Version und vollständige Liste mit Beispielen ist online unter Visual Studio 2008 Samples verfügbar.

  • Sie können auch Beispiele auf der Festplatte des Computers suchen. Standardmäßig werden Beispiele und eine Infodatei in einen Ordner unter \Programme\Visual Studio 9.0\Samples\ kopiert. Für Express Editions von Visual Studio sind alle Beispiele online verfügbar.

Erstellen und Ausführen des Beispiels

So erstellen Sie das MDI-Beispiel und führen es aus

  1. Öffnen Sie die Projektmappe mdi.sln.

  2. Klicken Sie im Menü Erstellen auf Erstellen.

  3. Klicken Sie im Menü Debuggen auf Starten ohne Debuggen.

Die MDI-Beispielanwendung stellt ein übergeordnetes Fenster bereit, in dem sich zwei verschiedene untergeordnete MDI-Fenster befinden: Ein Fenster mit der Bezeichnung Bounce, in dem sich ein hüpfender Ball befindet, und ein Fenster mit der Bezeichnung Hello, in dem der Text "Hello, World!" angezeigt wird. Sie können von jedem Fenstertyp mehrere Instanzen erstellen.

Klicken Sie im Menü File auf New Bounce bzw. New Hello, um ein neues untergeordnetes MDI-Fenster zu erstellen. Welche Menüs angezeigt werden, richtet sich nach dem jeweils aktiven untergeordneten MDI-Fenster. Beide Fenster verfügen über ein Menü mit der Bezeichnung Color. Wenn Sie aus diesem Menü eine Farbe auswählen, wird die Farbe des hüpfenden Balls bzw. des "Hello"-Texts entsprechend aktualisiert. Markieren Sie das benutzerdefinierte Element, um ein Dialogfeld aufzurufen, in dem Sie dann eine bestimmte Farbe auswählen können.

Das Fenster Bounce verfügt zusätzlich über das Menü Speed, über das Sie die Geschwindigkeit festlegen können, mit der sich der Ball über den Bildschirm bewegt.

Wenn Sie das Fenster Bounce auf Symbolgröße minimieren, werden Sie bemerken, dass kein statisches Symbol vorhanden ist. Stattdessen sehen Sie einen hüpfenden, kleinen Ball im Symbolbereich. Im Unterschied dazu verfügt das Fenster Hello über ein normales Symbol.

MDI ohne Dokumente oder Ansichten

Im Gegensatz zu einer vom Anwendungs-Assistenten erstellten MDI-Anwendung verwendet diese Beispielanwendung keine Unterstützung des Frameworks für Dokumente und Ansichten. Folglich verwendet sie keine Dokumentvorlagen, und AddDocTemplate wird nicht von der InitInstance der Anwendung aufgerufen.

Dennoch nutzt die Anwendung alle Vorteile der MDI-Unterstützung des Frameworks. CMainFrame ist von CMDIFrameWnd abgeleitet. CBounceWnd und CHelloWnd sind von CMDIChildWnd abgeleitet. Die Befehle im Menü Window (beispielsweise Tile) werden von der Framework-Standardimplementierung in CMDIFrameWnd behandelt.

Obwohl sowohl CBounceWnd als auch CHelloWnd den Befehl Create überschreiben, ist diese Überschreibung nicht notwendig, um die Vorteile der MDI-Unterstützung des Frameworks zu nutzen. Die Überschreibung des Befehls Create veranschaulicht, wie der Standardcursor und das Standardsymbol eines Fensters geändert werden können. Zum Ändern des Standardcursors oder -symbols eines Fensters ist die Registrierung einer neuen WNDCLASS erforderlich. Dazu müssen Sie AFXRegisterWndClass aufrufen und den Namen der WNDCLASS im Aufruf von Create übergeben.

Schlüsselwörter

Dieses Beispiel demonstriert die Verwendung der folgenden Schlüsselwörter:

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

Hinweis:

In diesem und einigen anderen Beispielen wurden die Änderungen an den Visual C++-Assistenten, -Bibliotheken und -Compilern noch nicht nachvollzogen. Sie demonstrieren aber dennoch, wie Sie die gewünschte Aufgabe durchführen können.

Siehe auch

Weitere Ressourcen

MFC-Beispiele