Condividi tramite


Struttura PRINTDLGEXW (commdlg.h)

Contiene informazioni utilizzate dalla funzione PrintDlgEx per inizializzare la finestra delle proprietà Print. Dopo che l'utente chiude la finestra delle proprietà, il sistema usa questa struttura per restituire informazioni sulle selezioni dell'utente.

Sintassi

typedef struct tagPDEXW {
  DWORD            lStructSize;
  HWND             hwndOwner;
  HGLOBAL          hDevMode;
  HGLOBAL          hDevNames;
  HDC              hDC;
  DWORD            Flags;
  DWORD            Flags2;
  DWORD            ExclusionFlags;
  DWORD            nPageRanges;
  DWORD            nMaxPageRanges;
  LPPRINTPAGERANGE lpPageRanges;
  DWORD            nMinPage;
  DWORD            nMaxPage;
  DWORD            nCopies;
  HINSTANCE        hInstance;
  LPCWSTR          lpPrintTemplateName;
  LPUNKNOWN        lpCallback;
  DWORD            nPropertyPages;
  HPROPSHEETPAGE   *lphPropertyPages;
  DWORD            nStartPage;
  DWORD            dwResultAction;
} PRINTDLGEXW, *LPPRINTDLGEXW;

Membri

lStructSize

Tipo: DWORD

Dimensione della struttura, in byte.

hwndOwner

Tipo: HWND

Handle per la finestra proprietaria della finestra delle proprietà. Questo membro deve essere un handle di finestra valido; non può essere NULL.

hDevMode

Tipo: HGLOBAL

Handle per un oggetto memoria globale mobile che contiene una struttura DEVMODE. Se hDevMode non è NULL all'input, è necessario allocare un blocco mobile di memoria per la struttura DEVMODE e inizializzare i relativi membri. La funzione PrintDlgEx utilizza i dati di input per inizializzare i controlli nella finestra delle proprietà. Quando printDlgEx restituisce, i membri DEVMODE indicano l'input dell'utente.

Se hDevMode è NULL all'input, PrintDlgEx alloca memoria per la struttura DEVMODE, inizializza i relativi membri per indicare l'input dell'utente e restituisce un handle che lo identifica.

Per altre informazioni sui membri hDevMode e hDevNames, vedere la sezione Osservazioni alla fine di questo argomento.

hDevNames

Tipo: HGLOBAL

Handle per un oggetto memoria globale mobile contenente una struttura DEVNAMES. Se hDevNames non è NULL all'input, è necessario allocare un blocco di memoria mobile per la struttura DEVNAMES e inizializzare i relativi membri. La funzione PrintDlgEx utilizza i dati di input per inizializzare i controlli nella finestra delle proprietà. Quando printDlgEx restituisce, i membri DEVNAMES contengono informazioni per la stampante scelta dall'utente. È possibile usare queste informazioni per creare un contesto di dispositivo o un contesto informativo.

Il membro hDevNames può essere NULL, nel qual caso PrintDlgEx alloca memoria per la struttura DEVNAMES, inizializza i relativi membri per indicare l'input dell'utente e restituisce un handle che lo identifica.

Per altre informazioni sui membri hDevMode e hDevNames, vedere la sezione Osservazioni alla fine di questo argomento.

hDC

Tipo: HDC

Handle per un contesto di dispositivo o un contesto informativo, a seconda che il membro Flags specifichi il flag PD_RETURNDC o PC_RETURNIC. Se non viene specificato alcun flag, il valore di questo membro non è definito. Se vengono specificati entrambi i flag, PD_RETURNDC ha priorità.

Flags

Tipo: DWORD

Set di flag di bit che è possibile utilizzare per inizializzare la finestra delle proprietà Stampa. Quando la funzione PrintDlgEx restituisce, imposta questi flag per indicare l'input dell'utente. Questo membro può essere uno o più dei valori seguenti.

Per assicurarsi che PrintDlg o PrintDlg Ex restituisca i valori corretti nel dmCopies e membri dmCollate della struttura di DEVMODE , impostare PD_RETURNDCTRUE e PD_USEDEVMODECOPIESANDCOLLATETRUE. In questo modo, il membro nCopies della struttura PRINTDLG è sempre 1 e PD_COLLATE è sempre FALSE.

Per assicurarsi che PrintDlg o PrintDlgEx restituisca i valori corretti in nCopies e PD_COLLATE, impostare PD_RETURNDC = TRUE e PD_USEDEVMODECOPIESANDCOLLATE = FALSE. In questo modo, dmCopies è sempre 1 e dmCollate è sempre FALSE.

A partire da Windows Vista, quando si chiama PrintDlg o PrintDlgEx con PD_RETURNDC impostato su TRUE e PD_USEDEVMODECOPIESANDCOLLATE impostato su FALSE, la funzione PrintDlg o PrintDlgEx imposta il numero di copie nel membro nCopies della struttura PRINTDLG , e imposta il numero di copie nella struttura rappresentata dal membro hDC della struttura PRINTDLG.

Quando si effettuano chiamate a GDI, è necessario ignorare il valore di nCopies, considerare il valore 1 e usare il hDC restituito per evitare la stampa di copie duplicate.

Valore Significato
PD_ALLPAGES
0x00000000
Flag predefinito che indica che inizialmente è selezionato il pulsante di opzione Tutto. Questo flag viene usato come segnaposto per indicare che i flag PD_PAGENUMS, PD_SELECTIONe PD_CURRENTPAGE non vengono specificati.
PD_COLLATE
0x00000010
Se questo flag è impostato, viene selezionata la casella di controllo collate .

Se questo flag viene impostato quando viene restituita la funzione PrintDlgEx , l'applicazione deve simulare le regole di confronto di più copie. Per altre informazioni, vedere la descrizione del flag PD_USEDEVMODECOPIESANDCOLLATE.

Vedere PD_NOPAGENUMS.

PD_CURRENTPAGE
0x00400000
Se questo flag è impostato, viene selezionato il pulsante di opzione pagina corrente . Se nessuno dei flag di PD_PAGENUMS, PD_SELECTIONo PD_CURRENTPAGE è impostato, viene selezionato il pulsante di opzione Tutti .
PD_DISABLEPRINTTOFILE
0x00080000
Disabilita la casella di controllo Stampa su file.
PD_ENABLEPRINTTEMPLATE
0x00004000
Indica che i membri hInstance e lpPrintTemplateName specificano una sostituzione per il modello di finestra di dialogo predefinito nella parte inferiore della pagina generale . Il modello predefinito contiene controlli simili a quelli della finestra di dialogo Stampa . Il sistema usa il modello specificato per creare una finestra figlio della pagina generale.
PD_ENABLEPRINTTEMPLATEHANDLE
0x00010000
Indica che il membro hInstance identifica un blocco di dati contenente un modello di finestra di dialogo precaricata. Questo modello sostituisce il modello di finestra di dialogo predefinito nella parte inferiore della pagina generale. Il sistema usa il modello specificato per creare una finestra figlio della pagina generale. Il sistema ignora il membro lpPrintTemplateName se viene specificato questo flag.
PD_EXCLUSIONFLAGS
0x01000000
Indica che il ExclusionFlags membro identifica gli elementi da escludere dalle pagine delle proprietà del driver della stampante. Se questo flag non è impostato, gli elementi verranno esclusi per impostazione predefinita dalle pagine delle proprietà del driver della stampante. Le esclusioni impediscono la duplicazione degli elementi tra la pagina Generale, le pagine specificate dall'applicazione e le pagine del driver della stampante.
PD_HIDEPRINTTOFILE
0x00100000
Nasconde la casella di controllo Stampa su file.
PD_NOCURRENTPAGE
0x00800000
Disabilita il pulsante di opzione pagina corrente .
PD_NOPAGENUMS
0x00000008
Disabilita il pulsante di opzione pagine e i controlli di modifica associati. Inoltre, la casella di controllo collate viene visualizzata nella finestra di dialogo.
PD_NOSELECTION
0x00000004
Disabilita il pulsante di opzione selezione .
PD_NOWARNING
0x00000080
Impedisce la visualizzazione del messaggio di avviso quando si verifica un errore.
PD_PAGENUMS
0x00000002
Se questo flag è impostato, viene selezionato il pulsante di opzione pagine . Se nessuno dei flag di PD_PAGENUMS, PD_SELECTIONo PD_CURRENTPAGE è impostato, viene selezionato il pulsante di opzione Tutti . Se questo flag viene impostato quando viene restituita la funzione PrintDlgEx, il membro lpPageRanges indica gli intervalli di pagine specificati dall'utente.
PD_PRINTTOFILE
0x00000020
Se questo flag è impostato, viene selezionata la casella di controllo Stampa su file. Se questo flag viene impostato quando viene restituito PrintDlgEx, l'offset indicato dal wOutputOffset membro della struttura DEVNAMES contiene la stringa "FILE:". Quando si chiama la funzione StartDoc per avviare l'operazione di stampa, specificare questa stringa "FILE:" nel membro lpszOutput della struttura DOCINFO . Se si specifica questa stringa, il sottosistema di stampa esegue una query sull'utente per il nome del file di output.
PD_RETURNDC
0x00000100
Fa sì che PrintDlgEx restituire un contesto di dispositivo corrispondente alle selezioni effettuate dall'utente nella finestra delle proprietà. Il contesto del dispositivo viene restituito in hDC.
PD_RETURNDEFAULT
0x00000400
Se questo flag è impostato, la funzione PrintDlgEx non visualizza la finestra delle proprietà. Imposta invece i membri hDevNames e hDevMode membri per DEVNAMES e strutture DEVMODE inizializzate per la stampante predefinita del sistema. Sia hDevNames che hDevMode devono essere NULLo PrintDlgEx restituisce un errore.
PD_RETURNIC
0x00000200
Analogamente al flag PD_RETURNDC, ad eccezione di questo flag restituisce un contesto informativo anziché un contesto di dispositivo. Se non viene specificato né PD_RETURNDCPD_RETURNIC, hDC non è definito nell'output.
PD_SELECTION
0x00000001
Se questo flag è impostato, viene selezionato il pulsante di opzione selezione . Se nessuno dei flag di PD_PAGENUMS, PD_SELECTIONo PD_CURRENTPAGE è impostato, viene selezionato il pulsante di opzione Tutti .
PD_USEDEVMODECOPIES
0x00040000
Uguale a PD_USEDEVMODECOPIESANDCOLLATE.
PD_USEDEVMODECOPIESANDCOLLATE
0x00040000
Questo flag indica se l'applicazione supporta più copie e regole di confronto. Impostare questo flag sull'input per indicare che l'applicazione non supporta più copie e regole di confronto. In questo caso, il membro nCopies della struttura PRINTDLGEX restituisce sempre 1 e PD_COLLATE non viene mai impostato nel membro Flag .

Se questo flag non è impostato, l'applicazione è responsabile della stampa e della compressione di più copie. In questo caso, il nCopies membro della struttura PRINTDLGEX indica il numero di copie che l'utente desidera stampare e il flag PD_COLLATE nel membro Flag indica se l'utente desidera regole di confronto.

Indipendentemente dal fatto che questo flag sia impostato, un'applicazione può determinare da nCopies e PD_COLLATE il numero di copie di cui eseguire il rendering e se stamparli compressi.

Se questo flag è impostato e il driver della stampante non supporta più copie, il Copia controllo di modifica è disabilitato. Analogamente, se questo flag è impostato e il driver della stampante non supporta le regole di confronto, la casella di controllo collate è disabilitata.

I dmCopies e dmCollate membri della struttura DEVMODE contengono le copie e le informazioni di confronto usate dal driver della stampante. Se questo flag è impostato e il driver della stampante supporta più copie, il membro dmCopies indica il numero di copie richieste dall'utente. Se questo flag è impostato e il driver della stampante supporta le regole di confronto, il dmCollate membro della struttura DEVMODE indica se l'utente desidera regole di confronto. Se questo flag non è impostato, il membro dmCopies restituisce sempre 1 e il membro dmCollate è sempre zero.

Nelle versioni di Windows precedenti a Windows Vista, se questo flag non è impostato dall'applicazione chiamante e il dmCopies membro della struttura DEVMODE è maggiore di 1, usare tale valore per il numero di copie; in caso contrario, utilizzare il valore del membro nCopies della struttura PRINTDLGEX .

PD_USELARGETEMPLATE
0x10000000
Forza la finestra delle proprietà a usare un modello di grandi dimensioni per la pagina generale . Il modello più grande offre più spazio per le applicazioni che specificano un modello personalizzato per la parte inferiore della pagina generale .

Flags2

Tipo: DWORD

ExclusionFlags

Tipo: DWORD

Set di flag di bit che possono escludere elementi dalle pagine delle proprietà del driver della stampante nella finestra delle proprietà Stampa. Questo valore viene utilizzato solo se il flag PD_EXCLUSIONFLAGS è impostato nel membro flag . I flag di esclusione devono essere utilizzati solo se l'elemento da escludere verrà incluso nella pagina generale o in una pagina definita dall'applicazione nella finestra delle proprietà stampa . Questo membro può specificare il flag seguente.

PD_EXCL_COPIESANDCOLLATE

Esclude i controlli copia e collate dalle pagine delle proprietà del driver della stampante in una finestra delle proprietà stampa . Questo flag deve essere sempre impostato quando l'applicazione utilizza i controlli copia predefiniti e Collate forniti dalla parte inferiore della pagina Generale della finestra delle proprietà Stampa.

nPageRanges

Tipo: DWORD

In input, impostare questo membro sul numero iniziale di intervalli di pagine specificati nella matrice lpPageRanges. Quando viene restituita la funzione PrintDlgEx, nPageRanges indica il numero di intervalli di pagine specificati dall'utente archiviati nella matrice lpPageRanges. Se viene specificato il flag PD_NOPAGENUMS, questo valore non è valido.

nMaxPageRanges

Tipo: DWORD

Dimensioni, negli elementi della matrice, del buffer lpPageRanges. Questo valore indica il numero massimo di intervalli di pagine che possono essere archiviati nella matrice. Se viene specificato il flag PD_NOPAGENUMS, questo valore non è valido. Se il flag PD_NOPAGENUMS non è specificato, questo valore deve essere maggiore di zero.

lpPageRanges

Tipo: LPPRINTPAGERANGE

Puntatore a un buffer contenente una matrice di strutture PRINTPAGERANGE. In caso di input, la matrice contiene gli intervalli di pagine iniziali da visualizzare nel controllo di modifica Pages. Quando la funzione PrintDlgEx restituisce, la matrice contiene gli intervalli di pagine specificati dall'utente. Se viene specificato il flag PD_NOPAGENUMS, questo valore non è valido. Se il flag di PD_NOPAGENUMS non è specificato, lpPageRanges deve essere diverso daNULL.

nMinPage

Tipo: DWORD

Valore minimo per gli intervalli di pagine specificati nel controllo di modifica Pages. Se viene specificato il flag PD_NOPAGENUMS, questo valore non è valido.

nMaxPage

Tipo: DWORD

Valore massimo per gli intervalli di pagine specificati nel controllo di modifica Pages. Se viene specificato il flag PD_NOPAGENUMS, questo valore non è valido.

nCopies

Tipo: DWORD

Contiene il numero iniziale di copie per il controllo di modifica copie se hDevMode è null; in caso contrario, il dmCopies membro della struttura DEVMODE contiene il valore iniziale. Quando viene restituito PrintDlgEx, nCopies contiene il numero effettivo di copie che l'applicazione deve stampare. Questo valore dipende dal fatto che l'applicazione o il driver della stampante sia responsabile della stampa di più copie. Se il flag PD_USEDEVMODECOPIESANDCOLLATE è impostato nel membro flag , nCopies è sempre 1 al ritorno e il driver della stampante è responsabile della stampa di più copie. Se il flag non è impostato, l'applicazione è responsabile della stampa del numero di copie specificate da nCopies. Per altre informazioni, vedere la descrizione del flag PD_USEDEVMODECOPIESANDCOLLATE.

hInstance

Tipo: HINSTANCE

Se il flag PD_ENABLEPRINTTEMPLATE è impostato nel membro flag , hInstance è un handle per l'applicazione o l'istanza del modulo che contiene il modello di finestra di dialogo denominato dal membro lpPrintTemplateName. Se il flag PD_ENABLEPRINTTEMPLATEHANDLE è impostato nel membro flag , hInstance è un handle per un oggetto memoria contenente un modello di finestra di dialogo. Se nessuno dei flag di modello è impostato nel membro flag , hInstance deve essere NULL.

lpPrintTemplateName

Tipo: LPCTSTR

Nome della risorsa modello della finestra di dialogo nel modulo identificato dal membro hInstance. Questo modello sostituisce il modello di finestra di dialogo predefinito nella parte inferiore della pagina generale. Il modello predefinito contiene controlli simili a quelli della finestra di dialogo Stampa . Questo membro viene ignorato a meno che il flag di PD_ENABLEPRINTTEMPLATE non sia impostato nel membro flag .

lpCallback

Tipo: LPUNKNOWN

Puntatore a un oggetto callback definito dall'applicazione.

L'oggetto deve contenere la classe IPrintDialogCallback per ricevere messaggi per la finestra di dialogo figlio nella parte inferiore della pagina Generale.

L'oggetto callback deve contenere anche la classe IObjectWithSite per ricevere un puntatore all'interfaccia IPrintDialogServices. La funzione PrintDlgEx chiama IUnknown::QueryInterface sull'oggetto di callback per IID_IPrintDialogCallback e IID_IObjectWithSite per determinare quali interfacce sono supportate.

Se non si desidera recuperare alcuna informazione sul callback, impostare lpCallback su NULL.

nPropertyPages

Tipo: DWORD

Numero di handle della pagina delle proprietà nella matrice lphPropertyPages.

lphPropertyPages

Tipo: HPROPSHEETPAGE*

Contiene una matrice di handle di pagina delle proprietà da aggiungere alla finestra delle proprietà Stampa. Le pagine delle proprietà aggiuntive seguono la pagina generale . Utilizzare la funzione CreatePropertySheetPage per creare queste pagine aggiuntive. Quando la funzione PrintDlgEx restituisce, tutti gli handle di HPROPSHEETPAGE lphPropertyPages sono stati eliminati definitivamente. Se nPropertyPages è zero, lphPropertyPages deve essere NULL.

nStartPage

Tipo: DWORD

Pagina delle proprietà visualizzata inizialmente. Per visualizzare la pagina Generale , specificare START_PAGE_GENERAL. In caso contrario, specificare l'indice in base zero di una pagina delle proprietà nella matrice specificata nella membro lphPropertyPages. Per coerenza, è consigliabile avviare sempre la finestra delle proprietà nella pagina generale.

dwResultAction

Tipo: DWORD

In input impostare questo membro su zero. Se la funzione PrintDlgEx restituisce S_OK, dwResultAction contiene il risultato della finestra di dialogo. Se PrintDlgEx restituisce un errore, questo membro deve essere ignorato. Il membro dwResultAction può essere uno dei valori seguenti.

PD_RESULT_APPLY

L'utente ha fatto clic sul pulsante applica e successivamente ha fatto clic sul pulsante annulla . Ciò indica che l'utente desidera applicare le modifiche apportate nella finestra delle proprietà, ma non vuole ancora stampare. La struttura PRINTDLGEX contiene le informazioni specificate dall'utente al momento in cui è stato fatto clic sul pulsante Applica .

PD_RESULT_CANCEL

L'utente ha fatto clic sul pulsante annulla . Le informazioni contenute nella struttura PRINTDLGEX sono invariate.

PD_RESULT_PRINT

L'utente ha fatto clic sul pulsante stampa . La struttura PRINTDLGEX contiene le informazioni specificate dall'utente.

Osservazioni

Se hDevMode e hDevNames sono null, PrintDlgEx inizializza la finestra delle proprietà utilizzando la stampante predefinita corrente. Per inizializzare la finestra delle proprietà per una stampante diversa, utilizzare il wDeviceOffset membro della struttura DEVNAMES per specificare il nome della stampante.

Si noti che il membro dmDeviceName della struttura DEVMODE specifica anche un nome di stampante. Tuttavia, dmDeviceName è limitato a 32 caratteri e il wDeviceOffset nome non è. Se il wDeviceOffset e nomi dmDeviceName non sono uguali, PrintDlgEx inizializza la finestra delle proprietà utilizzando la stampante specificata da wDeviceOffset.

Se il flag PD_RETURNDEFAULT è impostato e hDevMode e hDevNames sono NULL, PrintDlgEx utilizza i hDevNames e hDevMode membri per restituire informazioni sulla stampante predefinita corrente senza visualizzare la finestra di dialogo.

Durante l'esecuzione di PrintDlgEx, la DEVMODE e strutture DEVNAMES specificate nella struttura PRINTDLGEX potrebbero non contenere sempre dati correnti. Per questo motivo, le pagine delle proprietà specifiche dell'applicazione e routine IPrintDialogCallback per la pagina iniziale devono usare l'interfaccia IPrintDialogServices per recuperare informazioni sullo stato della stampante corrente.

Nota

L'intestazione commdlg.h definisce PRINTDLGEX come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.

Fabbisogno

Requisito Valore
client minimo supportato Windows 2000 Professional [solo app desktop]
server minimo supportato Windows 2000 Server [solo app desktop]
intestazione commdlg.h (include Windows.h)

Vedere anche

della libreria delle finestre di dialogo comuni

concettuale

DEVMODE

DEVNAMES

IPrintDialogCallback

IPrintDialogServices

PrintDlgEx

riferimento