CPageSetupDialog-Klasse

Kapselt die Dienste, die durch das allgemeine Windows-OLE-Dialogfeld "Seiteneinrichtung" bereitgestellt werden, zusammen mit zusätzlicher Unterstützung für das Festlegen und Ändern von Druckrändern.

Syntax

class CPageSetupDialog : public CCommonDialog

Member

Öffentliche Konstruktoren

Name Beschreibung
CPageSetupDialog::CPageSetupDialog Erstellt ein CPageSetupDialog-Objekt.

Öffentliche Methoden

Name Beschreibung
CPageSetupDialog::CreatePrinterDC Erstellt einen Gerätekontext für das Drucken.
CPageSetupDialog::D oModal Zeigt das Dialogfeld an und ermöglicht dem Benutzer, eine Auswahl vorzunehmen.
CPageSetupDialog::GetDeviceName Gibt den Gerätenamen des Druckers zurück.
CPageSetupDialog::GetDevMode Gibt den aktuellen DEVMODE des Druckers zurück.
CPageSetupDialog::GetDriverName Gibt den vom Drucker verwendeten Treiber zurück.
CPageSetupDialog::GetMargins Gibt die aktuellen Seitenrandeinstellungen des Druckers zurück.
CPageSetupDialog::GetPaperSize Gibt das Papierformat des Druckers zurück.
CPageSetupDialog::GetPortName Gibt den Ausgabeportnamen zurück.
CPageSetupDialog::OnDrawPage Wird vom Framework aufgerufen, um ein Bildschirmbild einer gedruckten Seite zu rendern.
CPageSetupDialog::P reDrawPage Wird vom Framework aufgerufen, bevor ein Bildschirmbild einer gedruckten Seite gerendert wird.

Öffentliche Datenmember

Name Beschreibung
CPageSetupDialog::m_psd Eine Struktur, die zum Anpassen eines CPageSetupDialog Objekts verwendet wird.

Hinweise

Diese Klasse wurde entwickelt, um das Dialogfeld "Drucken einrichten" zu übernehmen.

Um ein CPageSetupDialog Objekt zu verwenden, erstellen Sie zuerst das Objekt mit dem CPageSetupDialog Konstruktor. Nachdem das Dialogfeld erstellt wurde, können Sie beliebige Werte im m_psd Datenmemm festlegen oder ändern, um die Werte der Steuerelemente des Dialogfelds zu initialisieren. Die m_psd Struktur ist vom Typ PAGESETUPDLG.

Rufen Sie nach dem Initialisieren der Dialogfeldsteuerelemente die DoModal Memberfunktion auf, um das Dialogfeld anzuzeigen, und ermöglichen Sie dem Benutzer, Druckoptionen auszuwählen. DoModal gibt zurück, ob der Benutzer die Schaltfläche OK (IDOK) oder Cancel (IDCANCEL) ausgewählt hat.

Wenn DoModal IDOK zurückgegeben wird, können Sie mehrere Memberfunktionen CPageSetupDialogverwenden oder auf das m_psd Datenmememm zugreifen, um informationen vom Benutzer abzurufen.

Hinweis

Nachdem das allgemeine Dialogfeld "OLE-Seite einrichten" geschlossen wurde, werden alle vom Benutzer vorgenommenen Änderungen nicht vom Framework gespeichert. Es liegt an der Anwendung selbst, alle Werte aus diesem Dialogfeld an einem dauerhaften Speicherort zu speichern, z. B. Mitglied des Dokuments oder der Anwendungsklasse der Anwendung.

Vererbungshierarchie

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

CPageSetupDialog

Anforderungen

Header: afxdlgs.h

CPageSetupDialog::CPageSetupDialog

Rufen Sie diese Funktion auf, um ein CPageSetupDialog Objekt zu erstellen.

CPageSetupDialog(
    DWORD dwFlags = PSD_MARGINS | PSD_INWININIINTLMEASURE,
    CWnd* pParentWnd = NULL);

Parameter

dwFlags
Ein oder mehrere Flags, mit denen Sie die Einstellungen des Dialogfelds anpassen können. Die Werte können mit dem Bitweise-OR-Operator kombiniert werden. Diese Werte haben die folgenden Bedeutungen:

  • PSD_DEFAULTMINMARGINS Legt die minimale zulässige Breite für die Seitenränder fest, die mit den Mindestwerten des Druckers übereinstimmen. Dieses Kennzeichen wird ignoriert, wenn auch die PSD_MARGINS und PSD_MINMARGINS Flags angegeben werden.

  • PSD_INWININIINTLMEASURE Nicht implementiert.

  • PSD_MINMARGINS Bewirkt, dass das System die werte verwendet, die rtMinMargin im Element als mindest zulässige Breite für die linken, oberen, rechten und unteren Ränder angegeben sind. Das System verhindert, dass der Benutzer eine Breite eingibt, die kleiner als das angegebene Minimum ist. Wenn PSD_MINMARGINS nicht angegeben ist, legt das System die zulässigen Mindestbreiten auf diejenigen fest, die vom Drucker zulässig sind.

  • PSD_MARGINS Aktiviert den Bereich des Randsteuerelements.

  • PSD_INTHOUSANDTHSOFINCHES Bewirkt, dass die Einheiten des Dialogfelds in 1/1000 zoll gemessen werden.

  • PSD_INHUNDREDTHSOFMILLIMETERS Bewirkt, dass die Einheiten des Dialogfelds in einem Millimeter von 1/100 gemessen werden.

  • PSD_DISABLEMARGINS Deaktiviert die Randdialogfeld-Steuerelemente.

  • PSD_DISABLEPRINTER Deaktiviert die Schaltfläche "Drucker".

  • PSD_NOWARNING Verhindert, dass die Warnmeldung angezeigt wird, wenn kein Standarddrucker vorhanden ist.

  • PSD_DISABLEORIENTATION Deaktiviert das Seitenausrichtungsdialogfeld-Steuerelement.

  • PSD_RETURNDEFAULT BewirktCPageSetupDialog, dass DEVMODE- und DEVNAMES-Strukturen zurückgegeben werden, die für den Systemstandarddrucker initialisiert werden, ohne ein Dialogfeld anzuzeigen. Es wird davon ausgegangen, dass beide hDevNames und hDevMode NULL sind. Andernfalls gibt die Funktion einen Fehler zurück. Wenn der Systemstandarddrucker von einem alten Druckertreiber (vor Windows Version 3.0) unterstützt wird, wird nur hDevNames NULL zurückgegeben hDevMode .

  • PSD_DISABLEPAPER Deaktiviert das Papierauswahlsteuerelement.

  • PSD_SHOWHELP Bewirkt, dass im Dialogfeld die Schaltfläche "Hilfe" angezeigt wird. Das hwndOwner Element darf nicht NULL sein, wenn dieses Flag angegeben ist.

  • PSD_ENABLEPAGESETUPHOOK Aktiviert die in lpfnSetupHook.

  • PSD_ENABLEPAGESETUPTEMPLATE Bewirkt, dass das Betriebssystem das Dialogfeld mithilfe des dialogfeldvorlagenfelds erstellt, das durch hInstance und lpSetupTemplateName.

  • PSD_ENABLEPAGESETUPTEMPLATEHANDLE Gibt an, dass hInstance ein Datenblock identifiziert wird, der eine vorinstallierte Dialogfeldvorlage enthält. Das System ignoriert lpSetupTemplateName , wenn dieses Flag angegeben ist.

  • PSD_ENABLEPAGEPAINTHOOK Aktiviert die in lpfnPagePaintHook.

  • PSD_DISABLEPAGEPAINTING Deaktiviert den Zeichnungsbereich des Dialogfelds.

pParentWnd
Zeigen Sie auf das übergeordnete Element oder den Besitzer des Dialogfelds.

Hinweise

Verwenden Sie die DoModal-Funktion , um das Dialogfeld anzuzeigen.

Beispiel

void CMyRichEditView::OnPageSetupDlg()
{
   CPageSetupDialog psd(PSD_INTHOUSANDTHSOFINCHES | PSD_MARGINS |
      PSD_ENABLEPAGEPAINTHOOK, this);

   // Initialize margins
   psd.m_psd.rtMargin.top = 1000;
   psd.m_psd.rtMargin.left = 1250;
   psd.m_psd.rtMargin.right = 1250;
   psd.m_psd.rtMargin.bottom = 1000;
   psd.m_psd.lpfnPagePaintHook = (LPPAGEPAINTHOOK)PaintHook;

   if (IDOK == psd.DoModal())
   {
      // Propagate changes to the app
      AfxGetApp()->SelectPrinter(psd.m_psd.hDevNames, psd.m_psd.hDevMode);
   }
   else
   {
      TRACE(_T("CommDlgExtendedError returned error %d from ")
         _T("CPageSetupDialog::DoModal().\n"),
         (int)CommDlgExtendedError());
   }
}

CPageSetupDialog::CreatePrinterDC

Erstellt einen Druckergerätekontext aus den STRUKTUREN DEVMODE und DEVNAMES .

HDC CreatePrinterDC();

Rückgabewert

Behandeln sie den neu erstellten Druckergerätekontext (DC).

CPageSetupDialog::D oModal

Rufen Sie diese Funktion auf, um das allgemeine Windows OLE-Seiteneinrichtungsdialogfeld anzuzeigen, und dem Benutzer die Auswahl verschiedener Druckeinrichtungsoptionen wie z. B. die Druckränder, das Format und die Ausrichtung des Papiers sowie den Zieldrucker zu ermöglichen.

virtual INT_PTR DoModal();

Rückgabewert

IDOK oder IDCANCEL. Wenn IDCANCEL zurückgegeben wird, rufen Sie die Windows CommDlgExtendedError-Funktion auf, um zu ermitteln, ob ein Fehler aufgetreten ist.

IDOK und IDCANCEL sind Konstanten, die angeben, ob der Benutzer die Schaltfläche "OK" oder "Abbrechen" ausgewählt hat.

Hinweise

Darüber hinaus kann der Benutzer auf die Druckereinrichtungsoptionen zugreifen, z. B. netzwerkstandort und eigenschaften, die für den ausgewählten Drucker spezifisch sind.

Wenn Sie die verschiedenen Dialogfeldoptionen für die Seiteneinrichtung initialisieren möchten, indem Sie Elemente der m_psd Struktur festlegen, sollten Sie dies vor dem Aufrufen DoModalund nach dem Erstellen des Dialogobjekts tun. Rufen Sie nach dem Aufrufen DoModalandere Memberfunktionen auf, um die Einstellungen oder Informationen vom Benutzer in das Dialogfeld abzurufen.

Wenn Sie die vom Benutzer eingegebenen aktuellen Einstellungen weitergeben möchten, rufen Sie CWinApp::SelectPrinter auf. Diese Funktion verwendet die Informationen aus dem CPageSetupDialog Objekt und initialisiert und wählt einen neuen Drucker DC mit den richtigen Attributen aus.

AfxGetApp()->SelectPrinter(psd.m_psd.hDevNames, psd.m_psd.hDevMode);

Beispiel

Sehen Sie sich das Beispiel für CPageSetupDialog::CPageSetupDialog an.

CPageSetupDialog::GetDeviceName

Rufen Sie diese Funktion nach DoModal dem Abrufen des Namens des aktuell ausgewählten Druckers auf.

CString GetDeviceName() const;

Rückgabewert

Der vom CPageSetupDialog Objekt verwendete Gerätename.

CPageSetupDialog::GetDevMode

Rufen Sie diese Funktion nach dem Aufrufen DoModal auf, um Informationen zum Druckergerätekontext des CPageSetupDialog Objekts abzurufen.

LPDEVMODE GetDevMode() const;

Rückgabewert

Die DEVMODE-Datenstruktur , die Informationen zur Geräteinitialisierung und Umgebung eines Drucktreibers enthält. Sie müssen den Von dieser Struktur übernommenen Speicher mit der Windows GlobalUnlock-Funktion entsperren, die im Windows SDK beschrieben wird.

CPageSetupDialog::GetDriverName

Rufen Sie diese Funktion nach dem Aufrufen von DoModal auf, um den Namen des vom System definierten Druckergerätetreibers abzurufen.

CString GetDriverName() const;

Rückgabewert

Ein CString Angeben des vom System definierten Treibernamens.

Hinweise

Verwenden Sie einen Zeiger auf das Objekt, das CString als Wert in lpszDriverName einem Aufruf von CDC::CreateDC zurückgegeben GetDriverName wird.

CPageSetupDialog::GetMargins

Rufen Sie diese Funktion nach einem Aufruf auf, um DoModal die Seitenränder des Druckergerätetreibers abzurufen.

void GetMargins(
    LPRECT lpRectMargins,
    LPRECT lpRectMinMargins) const;

Parameter

lpRectMargins
Zeiger auf eine RECT-Struktur oder ein CRect-Objekt, das (in 1/1000 Zoll oder 1/100 mm) die Druckränder für den aktuell ausgewählten Drucker beschreibt. Übergeben Sie NULL für diesen Parameter, wenn Sie an diesem Rechteck nicht interessiert sind.

lpRectMinMargins
Zeigen Sie auf eine Struktur oder CRect ein RECT Objekt, die (in 1/1000 Zoll oder 1/100 mm) die minimalen Druckränder für den aktuell ausgewählten Drucker beschreibt. Übergeben Sie NULL für diesen Parameter, wenn Sie an diesem Rechteck nicht interessiert sind.

CPageSetupDialog::GetPaperSize

Rufen Sie diese Funktion auf, um die Größe des zum Drucken ausgewählten Papiers abzurufen.

CSize GetPaperSize() const;

Rückgabewert

Ein CSize-Objekt , das das Papierformat (in 1/1000 Zoll oder 1/100 mm) enthält, das zum Drucken ausgewählt ist.

CPageSetupDialog::GetPortName

Rufen Sie diese Funktion nach dem Aufrufen DoModal auf, um den Namen des aktuell ausgewählten Druckerports abzurufen.

CString GetPortName() const;

Rückgabewert

Der Name des aktuell ausgewählten Druckerports.

CPageSetupDialog::m_psd

Eine Struktur vom Typ PAGESETUPDLG, deren Member die Merkmale des Dialogobjekts speichern.

PAGESETUPDLG m_psd;

Hinweise

Nach dem Erstellen eines CPageSetupDialog Objekts können m_psd Sie verschiedene Aspekte des Dialogfelds festlegen, bevor Sie die DoModal Memberfunktion aufrufen.

Wenn Sie das m_psd Datenelement direkt ändern, überschreiben Sie alle Standardverhaltensweisen.

Weitere Informationen zur PAGESETUPDLG-Struktur finden Sie im Windows SDK.

Sehen Sie sich das Beispiel für CPageSetupDialog::CPageSetupDialog an.

CPageSetupDialog::OnDrawPage

Vom Framework aufgerufen, um ein Bildschirmbild einer gedruckten Seite zu zeichnen.

virtual UINT OnDrawPage(
    CDC* pDC,
    UINT nMessage,
    LPRECT lpRect);

Parameter

pDC
Zeiger auf den Druckergerätekontext.

nMessage
Gibt eine Nachricht an, die den Bereich der aktuell gezeichneten Seite angibt. Dabei kann es sich um eine der folgenden Methoden handeln:

  • WM_PSD_FULLPAGERECT Der gesamte Seitenbereich.

  • WM_PSD_MINMARGINRECT Aktuelle Mindestränder.

  • WM_PSD_MARGINRECT Aktuelle Seitenränder.

  • WM_PSD_GREEKTEXTRECT Inhalt der Seite.

  • WM_PSD_ENVSTAMPRECT Bereich, der für eine Briefmarkendarstellung reserviert ist.

  • WM_PSD_YAFULLPAGERECT Bereich für eine Absenderadressendarstellung. Dieser Bereich erstreckt sich auf die Ränder des Beispielseitenbereichs.

lpRect
Zeiger auf ein CRect- oder RECT-Objekt, das die Koordinaten des Zeichnungsbereichs enthält.

Rückgabewert

Nonzero-Wert, wenn behandelt; andernfalls 0.

Hinweise

Dieses Bild wird dann als Teil des allgemeinen Dialogfelds "OLE-Seite einrichten" angezeigt. Die Standardimplementierung zeichnet ein Bild einer Textseite.

Überschreiben Sie diese Funktion, um die Zeichnung eines bestimmten Bildbereichs oder des gesamten Bilds anzupassen. Dazu können Sie eine switch Anweisung mit case Anweisungen verwenden, die den Wert von nMessage überprüfen. Um beispielsweise das Rendering des Inhalts des Seitenbilds anzupassen, können Sie den folgenden Beispielcode verwenden:

switch (nMessage)
{
case WM_PSD_GREEKTEXTRECT:
   DrawMyImage(pDC, lpRect);    //draws my special graphic
   return 1;
default:
   return CPageSetupDialog::OnDrawPage(pDC, nMessage, lpRect);
}

Beachten Sie, dass Sie nicht jeden Fall von nMessage behandeln müssen. Sie können eine Komponente des Bilds, mehrere Komponenten des Bilds oder den gesamten Bereich behandeln.

CPageSetupDialog::P reDrawPage

Wird vom Framework aufgerufen, bevor das Bildschirmbild einer gedruckten Seite gezeichnet wird.

virtual UINT PreDrawPage(
    WORD wPaper,
    WORD wFlags,
    LPPAGESETUPDLG pPSD);

Parameter

wPaper
Gibt einen Wert an, der das Papierformat angibt. Dieser Wert kann einer der DMPAPER_ Werte sein, die in der Beschreibung der DEVMODE-Struktur aufgeführt sind.

wFlags
Gibt die Ausrichtung des Papiers oder Umschlags an und gibt an, ob es sich bei dem Drucker um ein Punktmatrixgerät oder ein HPPCL-Gerät (Hewlett Printer Control Language) handelt. Dieser Parameter kann einen der folgenden Werte aufweisen:

  • 0x001 Papier im Querformat (Punktmatrix)

  • 0x003 Papier im Querformatmodus (HPPCL)

  • 0x005 Papier im Hochformatmodus (Punktmatrix)

  • 0x007 Papier im Hochformatmodus (HPPCL)

  • 0x00b Umschlag im Querformatmodus (HPPCL)

  • 0x00d Envelope im Hochformatmodus (Punktmatrix)

  • 0x019 Umschlag im Querformatmodus (Punktmatrix)

  • 0x01f Umschlag im Hochformatmodus (Punktmatrix)

pPSD
Zeiger auf eine PAGESETUPDLG-Struktur. Weitere Informationen zu PAGESETUPDLG finden Sie im Windows SDK.

Rückgabewert

Nonzero-Wert, wenn behandelt; andernfalls 0.

Hinweise

Überschreiben Sie diese Funktion, um die Zeichnung des Bilds anzupassen. Wenn Sie diese Funktion außer Kraft setzen und WAHR zurückgeben, müssen Sie das gesamte Bild zeichnen. Wenn Sie diese Funktion außer Kraft setzen und FALSE zurückgeben, wird das gesamte Standardbild vom Framework gezeichnet.

Siehe auch

MFC-Beispiel FÜR WORDPAD
CCommonDialog-Klasse
Hierarchiediagramm