Dialogfeld "Seite einrichten"
Zeigt ein modales Dialogfeld an, in dem der Benutzer die folgenden Attribute der gedruckten Seite festlegen kann:
- Papierart (Briefumschlag, Rechts-, Brief usw.)
- Die Papierquelle (manueller Einzug, Traktorzuführung, Blattzuführung usw.)
- Die Seitenausrichtung (Hoch- oder Querformat)
- Die Breite der Seitenränder
Sie erstellen und zeigen ein Dialogfeld "Seite einrichten" an, indem Sie eine PAGESETUPDLG- Struktur initialisieren und die Struktur an die PageSetupDlg--Funktion übergeben. Die im Dialogfeld angezeigten Attribute variieren jedoch je nach den Funktionen des Druckers. Die folgende Abbildung zeigt ein typisches dialogfeld Seite einrichten.
Wenn der Benutzer auf die Schaltfläche OK klickt, gibt PageSetupDlgTRUE zurück, nachdem verschiedene Member in der PAGESETUPDLG Struktur festgelegt wurden, um die Auswahl des Benutzers anzugeben. Die ptPaperSize und rtMargin Member enthalten die vom Benutzer angegebenen Werte. Die "hDevMode" und "hDevNames"-Member enthalten globale Speicherhandles für die DEVMODE-- und DEVNAMES- Strukturen. Diese Strukturen enthalten zusätzliche Seiteninformationen sowie Informationen zum Drucker. Sie können diese Informationen verwenden, um die Ausgabe vorzubereiten, die an den ausgewählten Drucker gesendet werden soll.
Wenn der Benutzer das Dialogfeld Seite einrichten abbricht oder ein Fehler auftritt, gibt PageSetupDlgFALSEzurück. Rufen Sie zum Ermitteln der Ursache des Fehlers die CommDlgExtendedError-Funktion auf, um den erweiterten Fehlerwert abzurufen.
In diesem Abschnitt werden die folgenden Themen erläutert.
- Initialisieren des Dialogfelds "Seite einrichten"
- Anpassen des Dialogfelds "Seite einrichten"
- Anpassen der Beispielseite
Initialisieren des Dialogfelds "Seite einrichten"
Standardmäßig werden im Dialogfeld Seite einrichten Informationen zum aktuellen Standarddrucker angezeigt. Um das Dialogfeld zum Anzeigen von Informationen zu einem bestimmten Drucker zu leiten, legen Sie die Member eines DEVMODE- oder DEVNAMES- Struktur fest, und weisen Sie dem entsprechenden Element in PAGESETUPDLGdie globalen Speicherhandles dieser Strukturen zu. Wenn Sie den Namen eines Druckers angeben, der derzeit nicht installiert ist, wird im Dialogfeld eine Fehlermeldung angezeigt. Um zu verhindern, dass im Dialogfeld Fehlermeldungen angezeigt werden, verwenden Sie den PSD_NOWARNING Wert. Um Informationen zum Standarddrucker abzurufen, ohne das Dialogfeld Seite einrichten anzuzeigen, verwenden Sie den PSD_RETURNDEFAULT Wert.
Wenn das Standardmaßsystem Zoll ist, verwendet das Dialogfeld Tausendstel Zoll als Standardmaßeinheit. Wenn das Standardmaßsystem metrisch ist, verwendet das Dialogfeld Hundertstel Millimeter als Standardmaßeinheit. Um die Standardmaßeinheit außer Kraft zu setzen, legen Sie das PSD_INHUNDREDTHSOFMILLIMETERS- oder PSD_INTHOUSANDTHSOFINCHES-Flag im Flags Member der PAGESETUPDLG- Struktur fest.
Die Anfangswerte für die Seitenränder sind standardmäßig ein Zoll. Wenn Sie das PSD_MARGINS-Kennzeichen festlegen, zeigt das Dialogfeld die anfänglichen Randwerte an, die im rtMargin Member angegeben sind. Die Standardwerte, die der Benutzer für die Seitenränder angeben kann, sind die vom Drucker zulässigen Mindestränder. Wenn Sie das PSD_MINMARGINS-Kennzeichen festlegen, erzwingt das Dialogfeld die im rtMinMargin Member angegebenen Mindestränder.
Um zu verhindern, dass Benutzer bestimmte Optionen auswählen, legen Sie eine beliebige Kombination der folgenden Flags fest, um die entsprechenden Steuerelemente zu deaktivieren.
Flagge | Bedeutung |
---|---|
PSD_DISABLEMARGINS | Deaktiviert die Bearbeitungssteuerelemente, in denen der Benutzer die Randeinstellungen eingibt. |
PSD_DISABLEORIENTATION | Deaktiviert die Optionsfelder Hochformat und Querformat. |
PSD_DISABLEPAPER | Deaktiviert die Steuerelemente zum Auswählen des Papierformats und der Papierquelle. |
PSD_DISABLEPRINTER | Deaktiviert die Schaltfläche Drucker-. |
Anpassen des Dialogfelds "Seite einrichten"
Sie können eine benutzerdefinierte Vorlage für das Dialogfeld Seite einrichten bereitstellen, z. B. wenn Sie zusätzliche Steuerelemente einschließen möchten, die für Ihre Anwendung eindeutig sind. Die PageSetupDlg--Funktion verwendet ihre benutzerdefinierte Vorlage anstelle der Standardvorlage.
So stellen Sie eine benutzerdefinierte Vorlage für das Dialogfeld "Seite einrichten"
- Erstellen Sie die benutzerdefinierte Vorlage, indem Sie die in der Datei Prnsetup.dlg angegebene Standardvorlage ändern. Die Steuerelementbezeichner, die in der Standard-Dialogfeldvorlage "Seite einrichten" verwendet werden, werden in der Datei "Dlgs.h" definiert.
- Verwenden Sie die PAGESETUPDLG- Struktur, um die Vorlage wie folgt zu aktivieren:
-
Wenn es sich bei Der benutzerdefinierten Vorlage um eine Ressource in einer Anwendung oder einer Dynamic Link Library handelt, legen Sie das PSD_ENABLEPAGESETUPTEMPLATE Flag im Flags Member fest. Verwenden Sie die hInstance und lpPageSetupTemplateName Elemente der Struktur, um den Modul- und Ressourcennamen zu identifizieren.
-Oder-
Wenn sich Ihre benutzerdefinierte Vorlage bereits im Arbeitsspeicher befindet, legen Sie das kennzeichen PSD_ENABLEPAGESETUPTEMPLATEHANDLE fest. Verwenden Sie das hPageSetupTemplate Member, um das Speicherobjekt zu identifizieren, das die Vorlage enthält.
-
Zum Filtern von Nachrichten, die an die Dialogfeldprozedur gesendet werden, können Sie eine PageSetupHook- Hook-Prozedur bereitstellen. Wenn Sie eine benutzerdefinierte Vorlage verwenden, um zusätzliche Steuerelemente zu definieren, müssen Sie eine PageSetupHook- Hook-Prozedur bereitstellen, um Eingaben für Ihre Steuerelemente zu verarbeiten. Darüber hinaus können Sie ein PagePaintHook- Hook-Verfahren bereitstellen, um den Inhalt der Beispielseite anzupassen, die im Dialogfeld Seite einrichten angezeigt wird. Weitere Informationen zum PagePaintHook- Hook-Verfahren finden Sie unter Customizing the Sample Page.
So aktivieren Sie eine PageSetupHook-Hookprozedur
- Legen Sie das PSD_ENABLEPAGESETUPHOOK Flag im Flags Member der PAGESETUPDLG Struktur fest.
- Geben Sie die Adresse der Hook-Prozedur im lpfnPageSetupHook Member an.
Nach der Verarbeitung der WM_INITDIALOG Nachricht sendet die Dialogfeldprozedur eine WM_INITDIALOG Nachricht an die PageSetupHook- Hook-Prozedur. Der lParam- Parameter dieser Nachricht ist ein Zeiger auf die PAGESETUPDLG- Struktur, die zum Initialisieren des Dialogfelds verwendet wird.
Anpassen der Beispielseite
Das Dialogfeld Seite einrichten enthält ein Bild einer Beispielseite, die zeigt, wie sich die Auswahl des Benutzers auf die Darstellung der gedruckten Ausgabe auswirkt. Das Bild besteht aus einem Rechteck, das den ausgewählten Papier- oder Umschlagtyp darstellt, mit einem rechteck mit gepunkteten Linien, das die aktuellen Ränder darstellt, und teilweise (griechischer Text), um zu zeigen, wie Text auf der gedruckten Seite aussieht.
Wenn Sie die PageSetupDlg--Funktion aufrufen, können Sie eine PagePaintHook- Hook-Prozedur bereitstellen, um die Darstellung der Beispielseite anzupassen.
So aktivieren Sie eine PagePaintHook-Hook-Prozedur
- Legen Sie das PSD_ENABLEPAGEPAINTHOOK Flag im Flags Member der PAGESETUPDLG Struktur fest.
- Geben Sie die Adresse der Hook-Prozedur im lpfnPagePaintHook Member an.
Jedes Mal, wenn das Dialogfeld den Inhalt der Beispielseite zeichnen soll, empfängt das Hook-Verfahren die folgenden Meldungen in der Reihenfolge, in der sie aufgelistet sind.
Nachricht | Bedeutung |
---|---|
WM_PSD_PAGESETUPDLG | Das Dialogfeld ist dabei, die Beispielseite zu zeichnen. Das Hook-Verfahren kann diese Meldung verwenden, um den Inhalt der Beispielseite zu zeichnen. |
WM_PSD_FULLPAGERECT | Das Dialogfeld ist dabei, die Beispielseite zu zeichnen. Diese Meldung gibt das umgebende Rechteck der Beispielseite an. |
WM_PSD_MINMARGINRECT | Das Dialogfeld ist dabei, die Beispielseite zu zeichnen. Diese Meldung gibt das Randrechteck an. |
WM_PSD_MARGINRECT | Das Dialogfeld ist dabei, das Randrechteck zu zeichnen. |
WM_PSD_GREEKTEXTRECT | Das Dialogfeld ist dabei, den griechischen Text innerhalb des Randrechtecks zu zeichnen. |
WM_PSD_ENVSTAMPRECT | Das Dialogfeld ist dabei, im Umschlagstempelrechteck einer Umschlagbeispielseite zu zeichnen. Diese Nachricht wird nur für Umschläge gesendet. |
WM_PSD_YAFULLPAGERECT | Das Dialogfeld ist dabei, den Teil der Absenderadresse einer Umschlagbeispielseite zu zeichnen. Diese Nachricht wird für Umschläge und andere Papierformate gesendet. |
Wenn die Hook-Prozedur TRUE- für eine der ersten drei Meldungen einer Zeichnungssequenz (WM_PSD_PAGESETUPDLG, WM_PSD_FULLPAGERECToder WM_PSD_MINMARGINRECT) zurückgibt, sendet das Dialogfeld keine weiteren Meldungen und zeichnet erst auf der Beispielseite, wenn das System das nächste Mal die Beispielseite neu zeichnen muss. Wenn die Hook-Prozedur FALSE- für alle drei Nachrichten zurückgibt, sendet das Dialogfeld die verbleibenden Nachrichten der Zeichnungssequenz.
Wenn die Hook-Prozedur TRUE- für eine der verbleibenden Meldungen in einer Zeichnungssequenz zurückgibt, zeichnet das Dialogfeld nicht den entsprechenden Teil der Beispielseite. Wenn die Hook-Prozedur FALSE- für eine dieser Meldungen zurückgibt, zeichnet das Dialogfeld diesen Teil der Beispielseite.
Um zu verhindern, dass das Dialogfeld den Inhalt der Beispielseite zeichnet, können Sie das PSD_DISABLEPAGEPAINTING Flag festlegen. Dieses Flag wirkt sich nicht auf Ihre PagePaintHook- Hook-Prozedur aus, die weiterhin alle WM_PSD_* Nachrichten empfängt und den Beispielseiteninhalt zeichnen kann.