PRINTDLGA-Struktur (commdlg.h)
Enthält Informationen, die die PrintDlg-Funktion zum Initialisieren des Dialogfelds Drucken verwendet. Nachdem der Benutzer das Dialogfeld geschlossen hat, verwendet das System diese Struktur, um Informationen über die Auswahl des Benutzers zurückzugeben.
Syntax
typedef struct tagPDA {
DWORD lStructSize;
HWND hwndOwner;
HGLOBAL hDevMode;
HGLOBAL hDevNames;
HDC hDC;
DWORD Flags;
WORD nFromPage;
WORD nToPage;
WORD nMinPage;
WORD nMaxPage;
WORD nCopies;
HINSTANCE hInstance;
LPARAM lCustData;
LPPRINTHOOKPROC lpfnPrintHook;
LPSETUPHOOKPROC lpfnSetupHook;
LPCSTR lpPrintTemplateName;
LPCSTR lpSetupTemplateName;
HGLOBAL hPrintTemplate;
HGLOBAL hSetupTemplate;
} PRINTDLGA, *LPPRINTDLGA;
Member
lStructSize
Art: DWORD
Die Strukturgröße in Bytes.
hwndOwner
Typ: HWND
Ein Handle für das Fenster, das das Dialogfeld besitzt. Bei diesem Member kann es sich um ein beliebiges gültiges Fensterhandle handeln, oder es kann NULL sein, wenn das Dialogfeld keinen Besitzer hat.
hDevMode
Typ: HGLOBAL
Ein Handle für ein bewegliches globales Speicherobjekt, das eine DEVMODE-Struktur enthält. Wenn hDevMode bei der Eingabe nicht NULL ist, müssen Sie einen beweglichen Speicherblock für die DEVMODE-Struktur zuordnen und dessen Member initialisieren. Die PrintDlg-Funktion verwendet die Eingabedaten, um die Steuerelemente im Dialogfeld zu initialisieren. Wenn PrintDlg zurückgibt, geben die DEVMODE-Member die Eingabe des Benutzers an.
Wenn hDevMode bei der Eingabe NULL ist, weist PrintDlg Arbeitsspeicher für die DEVMODE-Struktur zu, initialisiert die Member, um die Eingabe des Benutzers anzugeben, und gibt ein Handle zurück, das ihn identifiziert.
Wenn der Gerätetreiber für den angegebenen Drucker keine erweiterten Gerätemodi unterstützt, ist hDevModeNULL , wenn PrintDlg zurückgibt.
Wenn der Gerätename (angegeben durch das dmDeviceName-Element der DEVMODE-Struktur ) nicht im Abschnitt [devices] von WIN.INI angezeigt wird, gibt PrintDlg einen Fehler zurück.
Weitere Informationen zu den Elementen hDevMode und hDevNames finden Sie im Abschnitt Hinweise am Ende dieses Themas.
hDevNames
Typ: HGLOBAL
Ein Handle für ein bewegliches globales Speicherobjekt, das eine DEVNAMES-Struktur enthält. Wenn hDevNames bei der Eingabe nicht NULL ist, müssen Sie einen beweglichen Speicherblock für die DEVNAMES-Struktur zuweisen und deren Member initialisieren. Die PrintDlg-Funktion verwendet die Eingabedaten, um die Steuerelemente im Dialogfeld zu initialisieren. Wenn PrintDlg zurückgibt, enthalten die DEVNAMES-Member Informationen für den vom Benutzer ausgewählten Drucker. Sie können diese Informationen verwenden, um einen Gerätekontext oder einen Informationskontext zu erstellen.
Das hDevNames-Element kann NULL sein. In diesem Fall weist PrintDlg Arbeitsspeicher für die DEVNAMES-Struktur zu, initialisiert seine Member, um die Eingabe des Benutzers anzugeben, und gibt ein Handle zurück, das ihn identifiziert.
Weitere Informationen zu den Elementen hDevMode und hDevNames finden Sie im Abschnitt Hinweise am Ende dieses Themas.
hDC
Typ: HDC
Ein Handle für einen Gerätekontext oder einen Informationskontext, je nachdem, ob das Flags-Element das PD_RETURNDC - oder PC_RETURNIC-Flag angibt. Wenn keines der Flags angegeben ist, ist der Wert dieses Members nicht definiert. Wenn beide Flags angegeben sind, hat PD_RETURNDC Priorität.
Flags
Art: DWORD
Initialisiert das Dialogfeld Drucken . Wenn das Dialogfeld zurückgibt, legt es diese Flags fest, um die Eingabe des Benutzers anzugeben. Bei diesem Member kann es sich um einen oder mehrere der folgenden Werte handeln.
Wert | Bedeutung |
---|---|
|
Das Standardflag, das angibt, dass das Optionsfeld Alle anfänglich ausgewählt ist. Dieses Flag wird als Platzhalter verwendet, um anzugeben, dass die flags PD_PAGENUMS und PD_SELECTION nicht angegeben sind. |
|
Wenn dieses Flag festgelegt ist, ist das Kontrollkästchen Sortieren aktiviert.
Wenn dieses Flag festgelegt wird, wenn die PrintDlg-Funktion zurückgibt, muss die Anwendung die Sortierung mehrerer Kopien simulieren. Weitere Informationen finden Sie in der Beschreibung des PD_USEDEVMODECOPIESANDCOLLATE Flags. Siehe PD_NOPAGENUMS. |
|
Deaktiviert das Kontrollkästchen In Datei drucken . |
|
Aktiviert die hook-Prozedur, die im lpfnPrintHook-Member angegeben ist. Dadurch wird die Hookprozedur für das Dialogfeld Drucken aktiviert. |
|
Gibt an, dass die Elemente hInstance und lpPrintTemplateName einen Ersatz für die Standardvorlage des Dialogfelds Drucken angeben. |
|
Gibt an, dass das hPrintTemplate-Element einen Datenblock identifiziert, der eine vorinstallierte Dialogfeldvorlage enthält. Diese Vorlage ersetzt die Standardvorlage für das Dialogfeld Drucken . Das System ignoriert den lpPrintTemplateName-Member , wenn dieses Flag angegeben ist. |
|
Aktiviert die Im lpfnSetupHook-Member angegebene Hookprozedur. Dadurch wird die Hookprozedur für das Dialogfeld Druckeinrichtung aktiviert. |
|
Gibt an, dass die Elemente hInstance und lpSetupTemplateName einen Ersatz für die Standardmäßige Dialogfeldvorlage Print Setup angeben. |
|
Gibt an, dass das hSetupTemplate-Element einen Datenblock identifiziert, der eine vorinstallierte Dialogfeldvorlage enthält. Diese Vorlage ersetzt die Standardvorlage für das Dialogfeld Druckeinrichtung . Das System ignoriert das Element lpSetupTemplateName , wenn dieses Flag angegeben ist. |
|
Blendet das Kontrollkästchen In Datei drucken aus. |
|
Blendet die Schaltfläche Netzwerk aus und deaktiviert sie. |
|
Deaktiviert das Optionsfeld Seiten und die zugehörigen Bearbeitungssteuerelemente. Außerdem wird das Kontrollkästchen Sortieren im Dialogfeld angezeigt. |
|
Deaktiviert das Optionsfeld Auswahl . |
|
Verhindert, dass die Warnmeldung angezeigt wird, wenn kein Standarddrucker vorhanden ist. |
|
Wenn dieses Flag festgelegt ist, ist das Optionsfeld Seiten ausgewählt. Wenn dieses Flag festgelegt wird, wenn die PrintDlg-Funktion zurückgibt, geben die Member nFromPage und nToPage die vom Benutzer angegebenen Anfangs- und Endseiten an. |
|
Bewirkt, dass das System das Dialogfeld Druckeinrichtung anstelle des Dialogfelds Drucken anzeigt. |
|
Wenn dieses Flag festgelegt ist, ist das Kontrollkästchen In Datei drucken aktiviert. Wenn dieses Flag festgelegt wird, wenn die PrintDlg-Funktion zurückgibt, enthält der durch das wOutputOffset-Element der DEVNAMES-Struktur angegebene Offset die Zeichenfolge "FILE:". Wenn Sie die StartDoc-Funktion aufrufen, um den Druckvorgang zu starten, geben Sie diese Zeichenfolge "FILE:" im lpszOutput-Element der DOCINFO-Struktur an. Wenn Sie diese Zeichenfolge angeben, fragt das Drucksubsystem den Benutzer nach dem Namen der Ausgabedatei ab. |
|
Bewirkt, dass PrintDlg einen Gerätekontext zurückgibt, der den Vom Benutzer im Dialogfeld vorgenommenen Auswahlen entspricht. Der Gerätekontext wird in hDC zurückgegeben. |
|
Wenn dieses Flag festgelegt ist, zeigt die PrintDlg-Funktion das Dialogfeld nicht an. Stattdessen werden die Elemente hDevNames und hDevMode für DEVMODE - und DEVNAMES-Strukturen festgelegt, die für den Standarddrucker des Systems initialisiert werden. Sowohl hDevNames als auch hDevMode müssen NULL sein, andernfalls gibt PrintDlg einen Fehler zurück. |
|
Ähnlich wie beim PD_RETURNDC-Flag , mit der Ausnahme, dass dieses Flag einen Informationskontext und keinen Gerätekontext zurückgibt. Wenn weder PD_RETURNDC noch PD_RETURNIC angegeben ist, ist hDC bei der Ausgabe nicht definiert. |
|
Wenn dieses Flag festgelegt ist, ist das Optionsfeld Auswahl ausgewählt. Wenn weder PD_PAGENUMS noch PD_SELECTION festgelegt ist, wird das Optionsfeld Alle ausgewählt. |
|
Bewirkt, dass im Dialogfeld die Schaltfläche Hilfe angezeigt wird. Das hwndOwner-Element muss das Fenster angeben, in dem die registrierten HELPMSGSTRING-Nachrichten empfangen werden, die das Dialogfeld sendet, wenn der Benutzer auf die Schaltfläche Hilfe klickt. |
|
Identisch mit PD_USEDEVMODECOPIESANDCOLLATE. |
|
Dieses Flag gibt an, ob Ihre Anwendung mehrere Kopien und Sortierung unterstützt. Legen Sie dieses Flag für die Eingabe fest, um anzugeben, dass Ihre Anwendung mehrere Kopien und Sortierungen nicht unterstützt. In diesem Fall gibt der nCopies-Member der PRINTDLG-Struktur immer 1 zurück, und PD_COLLATE wird nie im Flags-Element festgelegt.
Wenn dieses Flag nicht festgelegt ist, ist die Anwendung für das Drucken und Sortieren mehrerer Kopien verantwortlich. In diesem Fall gibt der nCopies-Member der PRINTDLG-Struktur die Anzahl der Kopien an, die der Benutzer drucken möchte, und das flag PD_COLLATE im Flags-Element gibt an, ob der Benutzer sortierungsaben möchte. Unabhängig davon, ob dieses Flag festgelegt ist, kann eine Anwendung anhand von nCopies bestimmen und PD_COLLATE , wie viele Kopien gerendert werden sollen und ob sie sortiert gedruckt werden sollen. Wenn dieses Flag festgelegt ist und der Druckertreiber mehrere Kopien nicht unterstützt, ist das Bearbeitungssteuerelement Kopien deaktiviert. Wenn dieses Flag festgelegt ist und der Druckertreiber die Sortierung nicht unterstützt, ist das Kontrollkästchen Sortieren deaktiviert. Die Elemente dmCopies und dmCollate der DEVMODE-Struktur enthalten die vom Druckertreiber verwendeten Kopien und Sortierinformationen. Wenn dieses Flag festgelegt ist und der Druckertreiber mehrere Kopien unterstützt, gibt das dmCopies-Element die Anzahl der vom Benutzer angeforderten Kopien an. Wenn dieses Flag festgelegt ist und der Druckertreiber die Sortierung unterstützt, gibt der dmCollate-Member der DEVMODE-Struktur an, ob der Benutzer eine Sortierung wünscht. Wenn dieses Flag nicht festgelegt ist, gibt das dmCopies-Element immer 1 zurück, und das dmCollate-Element ist immer null. Bekanntes Problem unter Windows 2000/XP/2003: Wenn dieses Flag vor dem Aufruf von PrintDlg nicht festgelegt ist, kann PrintDlg bei der Rückgabe nCopies - und dmCopies-Werte austauschen. Die Problemumgehung für dieses Problem besteht darin , dmCopies zu verwenden, wenn der Wert größer als 1 ist, andernfalls verwenden Sie nCopies, damit Sie die tatsächliche Anzahl von Kopien abrufen, die gedruckt werden sollen, wenn PrintDlg zurückgibt. |
Um sicherzustellen, dass PrintDlg oder PrintDlgEx die richtigen Werte in den Elementen dmCopies und dmCollate der DEVMODE-Struktur zurückgibt, legen Sie PD_RETURNDC = TRUE und PD_USEDEVMODECOPIESANDCOLLATE = TRUE fest. Dabei ist der nCopies-Member der PRINTDLG-Struktur immer 1, und PD_COLLATE ist immer FALSE.
Um sicherzustellen, dass PrintDlg oder PrintDlgEx die richtigen Werte in nCopies und PD_COLLATE zurückgibt, legen Sie PD_RETURNDC = TRUE und PD_USEDEVMODECOPIESANDCOLLATE = FALSE fest. Dabei ist dmCopies immer 1 und dmCollate ist immer FALSE.
Wenn Sie unter Windows Vista und Windows 7 PrintDlg oder PrintDlgEx aufrufen, wobei PD_RETURNDC auf TRUE und PD_USEDEVMODECOPIESANDCOLLATE auf FALSE festgelegt ist, legt die PrintDlg- oder PrintDlgEx-Funktion die Anzahl der Kopien im nCopies-Member der PRINTDLG-Struktur fest und legt die Anzahl der Kopien in der Struktur fest, die durch den hDC-Member der PRINTDLG-Struktur dargestellt wird.
Wenn Sie GDI aufrufen, müssen Sie den Wert von nCopies ignorieren, den Wert als 1 betrachten und das zurückgegebene hDC verwenden, um das Drucken doppelter Kopien zu vermeiden.
nFromPage
Typ: WORD
Der Anfangswert für das Bearbeitungssteuerelement der Startseite.
Wenn PrintDlg zurückgibt, ist nFromPage die vom Benutzer angegebene Startseite. Wenn das Optionsfeld Seiten ausgewählt ist, wenn der Benutzer auf die Schaltfläche Ok klickt, legt PrintDlg das flag PD_PAGENUMS fest und wird erst zurückgegeben, wenn der Benutzer einen Wert für die Startseite eingibt, der innerhalb des minimalen bis maximalen Seitenbereichs liegt.
Wenn der Eingabewert für nFromPage oder nToPage außerhalb des minimalen/maximalen Bereichs liegt, gibt PrintDlg nur dann einen Fehler zurück, wenn das flag PD_PAGENUMS angegeben ist. Andernfalls wird das Dialogfeld angezeigt, aber der Wert außerhalb des Bereichs in den minimalen oder maximalen Wert geändert.
nToPage
Typ: WORD
Der Anfangswert für das Bearbeitungssteuerelement für die endende Seite. Wenn PrintDlg zurückgibt, ist nToPage die vom Benutzer angegebene Endseite. Wenn das Optionsfeld Seiten ausgewählt ist, wenn die Verwendung auf die Schaltfläche Okay klickt, legt PrintDlg das flag PD_PAGENUMS fest und gibt erst zurück, wenn der Benutzer einen Endseitenwert eingibt, der innerhalb des minimalen bis maximalen Seitenbereichs liegt.
nMinPage
Typ: WORD
Der Mindestwert für den Seitenbereich, der in den Steuerelementen "Von " und " Bis " für die Seitenbearbeitung angegeben ist. Wenn nMinPagegleich nMaxPage ist, sind das Optionsfeld Pages und die Bearbeitungssteuerelemente für starte und endende Seiten deaktiviert.
nMaxPage
Typ: WORD
Der Maximalwert für den Seitenbereich, der in den Bearbeitungssteuerelementen Von und Bis angegeben ist.
nCopies
Typ: WORD
Die anfängliche Anzahl von Kopien für das Kopierbearbeitungssteuerelement , wenn hDevModeNULL ist; Andernfalls enthält das dmCopies-Element der DEVMODE-Struktur den Anfangswert. Wenn PrintDlg zurückgibt, enthält nCopies die tatsächliche Anzahl der zu druckenden Kopien. Dieser Wert hängt davon ab, ob die Anwendung oder der Druckertreiber für das Drucken mehrerer Kopien verantwortlich ist. Wenn das flag PD_USEDEVMODECOPIESANDCOLLATE im Flags-Element festgelegt ist, ist nCopies bei der Rückgabe immer 1, und der Druckertreiber ist für das Drucken mehrerer Kopien verantwortlich. Wenn das Flag nicht festgelegt ist, ist die Anwendung für das Drucken der von nCopies angegebenen Anzahl von Kopien verantwortlich. Weitere Informationen finden Sie in der Beschreibung des flags PD_USEDEVMODECOPIESANDCOLLATE .
hInstance
Typ: HINSTANCE
Wenn das PD_ENABLEPRINTTEMPLATE- oder PD_ENABLESETUPTEMPLATE-Flag im Flags-Element festgelegt ist, ist hInstance ein Handle für die Anwendung oder das Modul instance, das die Dialogfeldvorlage mit dem Namen lpPrintTemplateName oder lpSetupTemplateName-Member enthält.
lCustData
Typ: LPARAM
Anwendungsdefinierte Daten, die das System an die Hookprozedur übergibt, die vom lpfnPrintHook - oder lpfnSetupHook-Member identifiziert wird. Wenn das System die WM_INITDIALOG Nachricht an die Hookprozedur sendet, ist der lParam-Parameter der Nachricht ein Zeiger auf die PRINTDLG-Struktur , die beim Erstellen des Dialogs angegeben wurde. Die Hookprozedur kann diesen Zeiger verwenden, um den lCustData-Wert abzurufen.
lpfnPrintHook
Typ: LPPRINTHOOKPROC
Ein Zeiger auf eine PrintHookProc-Hookprozedur , die Nachrichten verarbeiten kann, die für das Dialogfeld Drucken vorgesehen sind. Dieser Member wird ignoriert, es sei denn, das flag PD_ENABLEPRINTHOOK im Flags-Element festgelegt ist.
lpfnSetupHook
Typ: LPSETUPHOOKPROC
Ein Zeiger auf eine SetupHookProc-Hookprozedur , die Meldungen verarbeiten kann, die für das Dialogfeld Druckeinrichtung vorgesehen sind. Dieser Member wird ignoriert, es sei denn , das flag PD_ENABLESETUPHOOK ist im Flags-Member festgelegt.
lpPrintTemplateName
Typ: LPCTSTR
Der Name der Dialogfeldvorlagenressource in dem Modul, das vom hInstance-Element identifiziert wird. Diese Vorlage ersetzt die Standardvorlage für das Dialogfeld Drucken . Dieser Member wird ignoriert, es sei denn, das PD_ENABLEPRINTTEMPLATE-Flag ist im Flags-Element festgelegt.
lpSetupTemplateName
Typ: LPCTSTR
Der Name der Dialogfeldvorlagenressource in dem Modul, das vom hInstance-Element identifiziert wird. Diese Vorlage ersetzt die Standardvorlage für das Dialogfeld "Drucken einrichten ". Dieser Member wird ignoriert, es sei denn, das flag PD_ENABLESETUPTEMPLATE ist im Flags-Member festgelegt.
hPrintTemplate
Typ: HGLOBAL
Wenn das flag PD_ENABLEPRINTTEMPLATEHANDLE im Flags-Element festgelegt ist, ist hPrintTemplate ein Handle für ein Speicherobjekt, das eine Dialogfeldvorlage enthält. Diese Vorlage ersetzt die Standardvorlage für das Dialogfeld Drucken .
hSetupTemplate
Typ: HGLOBAL
Wenn das flag PD_ENABLESETUPTEMPLATEHANDLE im Flags-Element festgelegt ist, ist hSetupTemplate ein Handle für ein Speicherobjekt, das eine Dialogfeldvorlage enthält. Diese Vorlage ersetzt die Standardvorlage für das Dialogfeld "Drucken einrichten ".
Hinweise
Wenn sowohl hDevMode als auch hDevNamesNULL sind, initialisiert PrintDlg das Dialogfeld mit dem aktuellen Standarddrucker. Um das Dialogfeld für einen anderen Drucker zu initialisieren, verwenden Sie das wDeviceOffset-Element der DEVNAMES-Struktur , um den Namen des Druckers anzugeben.
Beachten Sie, dass das dmDeviceName-Element der DEVMODE-Struktur auch einen Druckernamen angibt. DmDeviceName ist jedoch auf 32 Zeichen beschränkt, und der Name wDeviceOffset ist nicht. Wenn die Namen "wDeviceOffset" und "dmDeviceName " nicht übereinstimmen, initialisiert PrintDlg das Dialogfeld mit dem von wDeviceOffset angegebenen Drucker.
Wenn das flag PD_RETURNDEFAULT festgelegt ist und sowohl hDevMode als auch hDevNamesNULL sind, verwendet PrintDlg die Mitglieder hDevNames und hDevMode , um Informationen zum aktuellen Standarddrucker zurückzugeben, ohne das Dialogfeld anzuzeigen.
Hinweis
Der commdlg.h-Header definiert PRINTDLG als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit nicht codierungsneutralem Code kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Kopfzeile | commdlg.h (einschließlich Windows.h) |
Weitere Informationen
Allgemeine Dialogfeldbibliothek
Konzept
Referenz