Freigeben über


VIEWEX-Beispiel: Demonstriert mehrere Ansichten, Bildlaufansichten und Splitterfenster

Aktualisiert: November 2007

Das VIEWEX-Beispiel veranschaulicht Folgendes:

  • Ein statisches Splitterfenster, in dem sich die Reihenfolge und die Anzahl der Fensterbereiche nie ändert und in dem die Fensterbereiche üblicherweise unterschiedlichen Ansichtsklassen angehören.

  • Eine Formularansicht (CFormView), die ständig mit anderen Ansichten desselben Dokuments synchronisiert wird.

  • Dialogdatenaustausch (DDX, Dialog Data Exchange), insbesondere von Daten für Optionsfeldgruppen.

Das Dokument im VIEWEX-Beispiel ist sehr einfach strukturiert. Es besteht lediglich aus einer Zeichenfolge und der entsprechenden Farbe.

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 VIEWEX-Beispiel und führen es aus

  1. Öffnen Sie die Projektmappe viewex.sln.

  2. Klicken Sie im Menü Erstellen auf Erstellen.

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

Wenn Sie VIEWEX zum ersten Mal ausführen, wird das Dialogfeld Neu angezeigt, in dem Sie den darzustellenden Dokumentfenstertyp auswählen können:

  • Simple Text zeigt die Zeichenfolge mit der aktuellen Farbe zentriert im Fenster an.

  • Input Form View stellt ein Formular (CFormView) bereit, in dem Sie die Zeichenfolge in einem Edit-Steuerelement bearbeiten und deren Farbe ändern können. Wählen Sie einfach die entsprechende Farbe aus der Optionsfeldgruppe aus.

  • Splitter Frame with both zeigt die Textversion und das Eingabeformular in nebeneinander liegenden Fensterbereichen eines Splitterfensters an. Wenn Sie die Zeichenfolge (Buchstabe für Buchstabe) oder die Farbe im Eingabeformularbereich ändern, wird die Darstellung im Textbereich dynamisch aktualisiert.

  • Three-way Splitter Frame zeigt die Eingabeformularansicht in einem Splitterfensterbereich an. Der andere Fensterbereich wird durch eine Trennleiste in zwei Teilbereiche geteilt: Während der obere Teilbereich eine Textansicht zeigt, enthält der untere Teilbereich eine Farbansicht, die lediglich die aktuelle Farbe wiedergibt.

Zum Ändern der Zeichenfolge können Sie das Edit-Steuerelement im Eingabeformular verwenden oder im Menü Edit auf Change Data klicken.

Sie können auch mehrere Dokumente gleichzeitig anzeigen. Der Einfachheit halber ist es jedoch nicht möglich, Dokumente zu speichern oder erneut zu öffnen sowie Dokumente in mehreren der oben genannten Ansichten anzuzeigen.

Statisches Splitterfenster

Im VIEWEX-Beispiel erstellt das untergeordnete MDI-Fenster innerhalb des Clientbereichs ein Splitterfenster (1 x 2), indem OnCreateClient überschrieben wird. Bei Wahl der Option Three-way Splitter Frame wird im rechten Bereich des 1 x 2-Splitterfensters ein weiteres Splitterfenster (2 x 1) eingebettet.

Da anstelle von dynamischen Splitterfenstern statische Splitterfenster erstellt werden sollen, wird CSplitterWnd::CreateStatic (und nicht CSplitterWnd::Create) aufgerufen. Jeder Bereich des VIEWEX-Splitterfensters enthält eine andere Ansichtsklasse. Um die von CView abgeleitete Klasse für jeden Fensterbereich festzulegen, ruft VIEWEX die CSplitterWnd::CreateView-Funktion auf. Für den ersten Fensterbereich verwendet VIEWEX die Ansichtsklasse, die in dem Dokumentvorlagenobjekt angegeben ist und an OnCreateClient übergeben wird. OnCreateClient befindet sich in dem m_pNewViewClass-Member von CCreateContext. Für die anderen Fensterbereiche legt VIEWEX die RUNTIME_CLASS der Ansicht fest.

Formularansicht

CInputView demonstriert, wie eine Formularansicht mit anderen Ansichten synchronisiert wird. Dabei werden alle Änderungen, die durch Dateneingabe in einem der Felder entstehen, unmittelbar in den anderen Ansichten angezeigt. CInputView erreicht dies, indem sämtliche Steuerelemente von ON_EN_CHANGE und ON_BN_CLICKED einem zentralen OnDataChange-Meldungshandler zugeordnet werden. OnDataChange ruft CView::UpdateData auf, um Daten vom Bildschirm an die Membervariablen von CInputView zu übermitteln. Anschließend wird die UpdateAllViews-Funktion des Dokuments aufgerufen, um die anderen Ansichten über die Änderung zu informieren.

Dialogdatenaustausch (DDX, Dialog Data Exchange)

Die CInputView-Funktion des VIEWEX-Beispiels demonstriert den Dialogdatenaustausch (DDX) von Daten für Optionsfeldgruppen. Beachten Sie, dass in der Datei Iputvw.h nur das erste Optionsfeld in der Gruppe der Membervariablen m_iColor in CInputView::DoDataExchange zugeordnet wird. Bei m_iColor handelt es sich um einen nullbasierten Ordinalwert (int), der angibt, welches Optionsfeld ausgewählt wurde.

Schlüsselwörter

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

CDC::FillRect; CDialog::DoModal; CDocument::OnNewDocument; CDocument::UpdateAllViews; CFrameWnd::LoadFrame; CFrameWnd::OnCreateClient; CFrameWnd::SetActiveView; CObject::Serialize; CRect::Height; CRect::Width; CSplitterWnd::CreateStatic; CSplitterWnd::CreateView; CSplitterWnd::GetPane; CSplitterWnd::IdFromRowCol; CString::GetLength; CView::GetDocument; CView::OnActivateView; CView::OnDraw; CView::OnUpdate; CWinApp::AddDocTemplate; CWinApp::InitInstance; CWinApp::OnFileNew; CWnd::DoDataExchange; CWnd::GetClientRect; CWnd::OnMouseActivate; CWnd::ShowWindow; CWnd::UpdateData; CWnd::UpdateWindow; RGB; SetBkMode; SetTextAlign; SetTextColor; TextOut; 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