Seitenansichts-Architektur
In diesem Artikel wird beschrieben, wie das MFC-Framework Funktionen für die Seitenansicht implementieren.Folgende Themen werden behandelt:
Prozess Seitenansicht
Ändern der Seitenansicht
Seitenansicht drucken und Bildschirmanzeige ist geringfügig anders, weil, anstatt ein Bild auf einem Gerät direkt zu zeichnen, muss die Anwendung den Drucker mithilfe des Bildschirms simulieren.Um dies zu verwalten, definiert eine besondere (Microsoft Foundation Class Library) nicht dokumentierten Klasse, die von CDC-Klasse abgeleitet wird, aufgerufen CPreviewDC.Alle CDC-Objekte enthalten, aber in der Regel zwei Gerätekontexte sie identisch sind.In einem CPreviewDC-Objekt sind sie unterschiedlich: Das erste stellt den Drucker dar, der simuliert werden soll, und das zweite Element stellt den Bildschirm dar, auf dem die Ausgabe tatsächlich angezeigt wird.
Der Seitenansichts-Prozess
Wenn der Benutzer den Befehl Seitenansicht des Datei Menü auswählt, erstellt das Framework ein CPreviewDC-Objekt.Sobald die Anwendung einen Vorgang ausführt, der eine Besonderheit des Druckergerätekontexts festgelegt wird, führt das Framework auch einen ähnlichen Vorgang auf dem Bildschirm-Gerätekontext aus.Wenn die Anwendung beispielsweise eine Schriftart für das Drucken ausgewählt wird, wählt das Framework für eine Schriftart aus, um die Bildschirmanzeige Drucker die Schriftart simuliert.Sobald die Anwendung Ausgabe an den Drucker gesendet wird, sendet das Framework stattdessen die Ausgabe auf dem Bildschirm aus.
Seitenansicht unterscheidet sich von dem auch das Drucken in der Reihenfolge, die die einzelnen Seiten eines Dokuments zeichnet.Während des Drucks legt die Grundstruktur einer Schleife fortgesetzt, bis zu einem bestimmten Seitenbereich gerendert wurde.Während der Seitenansicht werden eine oder zwei Seiten jederzeit angezeigt, und wartet die Anwendung. Es werden keine weiteren Seiten angezeigt wird, bis der Benutzer reagiert.Während der Seitenansicht muss die Anwendung auf WM_PAINT auch Nachrichten reagieren, so wie sie während der normalen Bildschirmanzeige ausführt.
Die CView::OnPreparePrinting-Funktion wird aufgerufen, wenn Seitenansichtsmodus aufgerufen wird, wie er am Anfang eines Druckauftrags ist.Die CPrintInfo-Struktur-Struktur, die an die Funktion übergeben wird, enthält mehrere Member, deren Werte Sie festlegen können, um bestimmte Merkmale des Datenvorgangs Seitenansicht anzupassen.Beispielsweise können Sie den m_nNumPreviewPages-Member festlegen, um anzugeben, ob Sie das Dokument im angegebenen Umbruchmodus bestehend aus einer Seite oder in der Vorschau anzeigen möchten.
Ändern der Seitenansicht
Sie können das Verhalten und die Darstellung der Seitenansicht auf vielfältige Weise ändern und nicht einfach.Beispielsweise können Sie unter anderem:
Veranlassen Sie das Fenster Seitenansicht, eine Bildlaufleiste für einfachen Zugriff auf jeder Seite des Dokuments angezeigt wird.
Veranlassen Sie die Seitenansicht, wird die Position des Benutzers im Dokument beizubehalten, indem Sie die Anzeige auf der aktuellen Seite beginnen.
Veranlassen Sie verschiedene Initialisierung für die Seitenansicht und Belastung ausgeführt werden.
Verursachen Sie die Seitenansicht zu Bildseite seitenzahlen in Ihren eigenen Formaten.
Wenn Sie wissen, wie lange das Dokument SetMaxPage mit dem entsprechenden Wert ist und aufruft, kann das Framework diese Informationen im Seitenansichtsmodus sowie für das Drucken verwenden.Nachdem das Framework die Länge des Dokuments nicht kennt, kann es das Vorschaufenster mit einer Bildlaufleiste, bereitgestellt und den Benutzer durch das Dokument im Seitenansichtsmodus hin und her ermöglichen.Wenn Sie nicht die Länge des Dokuments festgelegt haben, kann das Framework nicht das Bildlauffeld festlegen, um die aktuelle Position angegeben. Daher werden das Framework keine Bildlaufleisten hinzufügen.In diesem Fall muss der Benutzer die nächste Seite und die Vorherige vorherigen Seite auf der Steuerleiste Vorschau des Fensters durch das Dokument verwenden.
Für die Seitenansicht suchen Sie möglicherweise nützlich, einen Wert zuweisen dem m_nCurPage-Member von CPrintInfo, obwohl Sie dies nicht tun würden. Druckvorgang für gewöhnlichenWährend der normalen Drucken gilt dieser Member Informationen vom Framework an die Ansichtsklasse.Dies ist, wie das Framework die Ansicht mitteilt, welche Seite gedruckt werden soll.
Im Gegensatz dazu wenn der Modus " Seitenansicht " gestartet wird, gilt der Member m_nCurPage Informationen in der entgegengesetzten Richtung: aus der Ansicht in das Framework.Das Framework verwendet den Wert dieses Members, um zu bestimmen, welche Seite zum ersten Mal in der Vorschau angezeigt werden soll.Der Standardwert dieses Members ist 1. Dies ist die erste Seite des Dokuments zuerst angezeigt.Sie können OnPreparePrinting überschreiben, um diesen Member in die Seitenzahl festzulegen, die angezeigt wird, wenn die Seitenansicht der Befehl aufgerufen wurde.Auf diese Weise stellt die Anwendung behält die aktuelle Position des Benutzers beim Verschieben aus dem normalen Modus für die Seitenansicht an den Anzeigemodus bei.
Möglicherweise möchten Sie OnPreparePrinting unterschiedliche Initialisierung ausführen, je nachdem, ob sie für einen Druckauftrag oder für die Seitenansicht aufgerufen wird.Sie können dies bestimmen, indem Sie die m_bPreview-Membervariable in der CPrintInfo-Struktur untersuchen.Dieser Member wird auf TRUE festgelegt, wenn die Seitenansicht aufgerufen wird.
Die CPrintInfo-Struktur enthält auch einen Member mit dem Namen m_strPageDesc, der verwendet wird, um die Zeichenfolgen zu formatieren, die am unteren Rand des Bildschirms in bestimmten PAGE und mehrere PAGE-Modi angezeigt werden.Standardmäßig sind diese Zeichenfolgen im Format "Seite " n" und "Seiten n - m", aber Sie können m_strPageDesc aus OnPreparePrinting ändern und die Zeichenfolgen zu durchdachterem einige festlegen.Weitere Informationen finden Sie unter CPrintInfo-Struktur in der MFC-Referenz.