Einrichten der gedruckten Seite

Dieses Thema beschreibt Beispielcode, der ein Dialogfeld Seite einrichten angezeigt, damit ein Benutzer die Attribute der gedruckten Seite, z. B. den Papiertyp, Papierzufuhr, Seitenausrichtung und Seitenränder auswählen kann. Der Code initialisiert zuerst eine PAGESETUPDLG Struktur und ruft dann die PageSetupDlg -Funktion, um das Dialogfeld anzuzeigen.

In diesem Beispiel legt das PSD_MARGINS-Flag in den Flags und verwendet den RtMargin -Member auf die initial Margin-Werte angeben. Es setzt das Flag PSD_INTHOUSANDTHSOFINCHES, um sicherzustellen, dass das Dialogfeld Randabmessungen in tausendstel Zoll drückt.

Bei der Eingabe legt der Beispielcode die hDevMode und hDevNames Mitglieder auf NULL fest. Wenn die Funktion TRUE zurückgibt, verwendet die Funktion diese Mitglieder um Handles für zurückzugeben DEVMODE und DEVNAMES -Strukturen, die die Benutzereingaben enthalten und Informationen über den Drucker. Sie können diese Informationen verwenden, bereiten Sie die Ausgabe an den ausgewählten Drucker gesendet werden.

Das Beispiel ermöglicht auch eine PagePaintHook -Hook-Prozedur zum Zeichnen des Inhalts der Seite anpassen.

PAGESETUPDLG Psd;    / / gemeinsame Dialogfeld Struktur
HWND Hwnd;           / / Besitzerfenster

/ / Initialize PAGESETUPDLG
ZeroMemory (Amp; Psd, sizeof(PAGESETUPDLG));
PSD.lStructSize = sizeof(PAGESETUPDLG);
PSD.hwndOwner = Hwnd;
PSD.hDevMode = NULL; / / Nicht vergessen zu befreien oder hDevMode speichern.
PSD.hDevNames = NULL; / / Vergessen Sie nicht, frei oder speichern
                  hDevNames.
PSD.Flaggen = PSD_INTHOUSANDTHSOFINCHES | PSD_MARGINS | 
                  PSD_ENABLEPAGEPAINTHOOK; 
PSD.rtMargin.Top = 1000;
PSD.rtMargin.Left = 1250;
PSD.rtMargin.Right = 1250;
PSD.rtMargin.Bottom = 1000;
PSD.lpfnPagePaintHook = PaintHook;

Wenn (PageSetupDlg(&psd) == TRUE) {}
    / / check Papier Größe und Marge Werte hier
} 

Das folgende Beispiel zeigt eine Beispiel- PagePaintHook -Hook-Prozedur, die das Rechteck Marge im Bereich Seite Beispiel zeichnet:

BOOL CALLBACK PaintHook (HwndDlg HWND, UINT uMsg, WPARAM wParam, LPARAM lParam) {LPRECT Lprc; 
    COLORREF CrMargRect; 
    HDC Hdc, HdcOld; 
 
    Switch (uMsg) {/ / das Marge Rechteck aufziehen. 
        WM_PSD_MARGINRECT Fall: Hdc = (HDC) wParam; 
            LPRC = (LPRECT) lParam; 
 
            / / Get Systemfarbe. 
            CrMargRect = GetSysColor(COLOR_HIGHLIGHT); 
 
            / / Erstellen einer Strich-Punkt-Feder von Systemfarbe und / / wählen Sie es in der DC die Beispielseite. 
            HdcOld = SelectObject (Hdc, CreatePen (PS_DASHDOT,.5, CrMargRect)); 
 
            / / Draw the Rectangle Marge. 
            Rechteck (Hdc, Lprc-Gt; Links, Lprc - > top, Lprc - > rechts, Lprc - > unten); 
 
            / / Wiederherstellen den vorherigen Stift an den DC. 
            AuswählenObjekt (Hdc, HdcOld); 
            TRUE zurück; 
 
        Standard: return FALSE; 
    } return TRUE; 
} 

 

Index