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 CPageSetupDialog
verwenden 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
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 Bewirkt
CPageSetupDialog
, dass DEVMODE- und DEVNAMES-Strukturen zurückgegeben werden, die für den Systemstandarddrucker initialisiert werden, ohne ein Dialogfeld anzuzeigen. Es wird davon ausgegangen, dass beidehDevNames
undhDevMode
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 nurhDevNames
NULL zurückgegebenhDevMode
.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
undlpSetupTemplateName
.PSD_ENABLEPAGESETUPTEMPLATEHANDLE Gibt an, dass
hInstance
ein Datenblock identifiziert wird, der eine vorinstallierte Dialogfeldvorlage enthält. Das System ignoriertlpSetupTemplateName
, 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 DoModal
und nach dem Erstellen des Dialogobjekts tun. Rufen Sie nach dem Aufrufen DoModal
andere 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