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;
Members
lStructSize
Tipo: DWORD
Dimensioni 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 nell'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 viene restituito, i membri DEVMODE indicano l'input dell'utente.
Se hDevMode è NULL nell'input, PrintDlgEx alloca la 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 che contiene una struttura DEVNAMES . Se hDevNames non è NULL nell'input, è necessario allocare un blocco mobile di memoria 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 viene restituito, 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à Print . Quando la funzione PrintDlgEx viene restituita, imposta questi flag per indicare l'input dell'utente. Questo membro può essere uno o più dei valori seguenti.
Per assicurarsi che PrintDlg o PrintDlgEx restituisca i valori corretti nei membri dmCopies e dmCollate della struttura DEVMODE , impostare PD_RETURNDC = TRUE e PD_USEDEVMODECOPIESANDCOLLATE = TRUE. 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 chiami 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 data center hDC restituito per evitare di stampare copie duplicate.
Valore | Significato |
---|---|
|
Flag predefinito che indica che inizialmente è selezionato il pulsante di opzione Tutti . Questo flag viene usato come segnaposto per indicare che i flag PD_PAGENUMS, PD_SELECTION e PD_CURRENTPAGE non sono specificati. |
|
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. |
|
Se questo flag è impostato, viene selezionato il pulsante di opzione Pagina corrente . Se nessuna delle PD_PAGENUMS, PD_SELECTION o PD_CURRENTPAGE flag è impostata, viene selezionato il pulsante di opzione Tutti . |
|
Disabilita la casella di controllo Stampa su file . |
|
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 . |
|
Indica che il membro hInstance identifica un blocco di dati che contiene un modello di finestra di dialogo precaricato. 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 . Se questo flag viene specificato, il sistema ignora il membro lpPrintTemplateName . |
|
Indica che il membro ExclusionFlags 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. |
|
Nasconde la casella di controllo Stampa su file . |
|
Disabilita il pulsante di opzione Pagina corrente . |
|
Disabilita il pulsante di opzione Pages e i controlli di modifica associati. Inoltre, la casella di controllo Collate viene visualizzata nella finestra di dialogo. |
|
Disabilita il pulsante di opzione Selezione . |
|
Impedisce la visualizzazione del messaggio di avviso quando si verifica un errore. |
|
Se questo flag è impostato, viene selezionato il pulsante di opzione Pagine . Se nessuna delle PD_PAGENUMS, PD_SELECTION o PD_CURRENTPAGE flag è impostata, 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. |
|
Se questo flag è impostato, è selezionata la casella di controllo Stampa su file . Se questo flag viene impostato quando PrintDlgEx restituisce, l'offset indicato dal membro wOutputOffset 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. |
|
Consente a PrintDlgEx di restituire un contesto del dispositivo corrispondente alle selezioni effettuate dall'utente nel foglio delle proprietà. Il contesto del dispositivo viene restituito in hDC. |
|
Se questo flag è impostato, la funzione PrintDlgEx non visualizza il foglio delle proprietà. Imposta invece i membri hDevNames e hDevMode per gestire le strutture DEVNAMES e DEVMODE inizializzate per la stampante predefinita del sistema. Sia hDevNames che hDevMode devono essere NULL o PrintDlgEx restituisce un errore. |
|
Analogamente al flag di PD_RETURNDC , ad eccezione di questo flag, restituisce un contesto informativo anziché un contesto del dispositivo. Se non viene specificato né PD_RETURNDC né PD_RETURNIC , hDC non è definito nell'output. |
|
Se questo flag è impostato, viene selezionato il pulsante di opzione Selezione . Se nessuna delle PD_PAGENUMS, PD_SELECTION o PD_CURRENTPAGE flag è impostata, viene selezionato il pulsante di opzione Tutti. |
|
Uguale a PD_USEDEVMODECOPIESANDCOLLATE. |
|
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 Flags .
Se questo flag non è impostato, l'applicazione è responsabile della stampa e della confronto di più copie. In questo caso, il membro nCopies della struttura PRINTDLGEX indica il numero di copie che l'utente vuole stampare e il flag PD_COLLATE nel membro Flags indica se l'utente vuole regole di confronto. Indipendentemente dal fatto che questo flag sia impostato, un'applicazione può determinare da nCopies e PD_COLLATE il numero di copie da eseguire per il rendering e se stamparli con confronto. Se questo flag è impostato e il driver della stampante non supporta più copie, il controllo Copia 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 membri dmCopies e dmCollate della struttura DEVMODE contengono le copie e comprimere le informazioni 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 membro dmCollate della struttura DEVMODE indica se l'utente vuole 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 dal membro dmCopies della struttura DEVMODE è maggiore di 1, usare tale valore per il numero di copie; in caso contrario, usare il valore del membro nCopies della struttura PRINTDLGEX . |
|
Forza il foglio 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 nel foglio delle proprietà Print . Questo valore viene usato solo se il flag di PD_EXCLUSIONFLAGS è impostato nel membro Flags . I flag di esclusione devono essere usati solo se l'elemento da escludere verrà incluso nella pagina Generale o in una pagina definita dall'applicazione nel foglio delle proprietà Print . 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 un foglio delle proprietà Print . Questo flag deve sempre essere impostato quando l'applicazione usa i controlli Copia e Collate predefiniti forniti dalla parte inferiore della pagina Generale del foglio delle proprietà Print .
nPageRanges
Tipo: DWORD
In input impostare questo membro sul numero iniziale di intervalli di pagine specificati nella matrice lpPageRanges . Quando la funzione PrintDlgEx restituisce, 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 di 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 input, la matrice contiene gli intervalli di pagine iniziali da visualizzare nel controllo Modifica pagine . 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 da NULL.
nMinPage
Tipo: DWORD
Valore minimo per gli intervalli di pagine specificati nel controllo Modifica pagine . Se viene specificato il flag PD_NOPAGENUMS , questo valore non è valido.
nMaxPage
Tipo: DWORD
Valore massimo per gli intervalli di pagine specificati nel controllo Modifica pagine . Se viene specificato il flag PD_NOPAGENUMS , questo valore non è valido.
nCopies
Tipo: DWORD
Contiene il numero iniziale di copie per il controllo Copia modifica se hDevMode è NULL; in caso contrario, il membro dmCopies della struttura DEVMODE contiene il valore iniziale. Quando PrintDlgExrestituisce, 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 di PD_USEDEVMODECOPIESANDCOLLATE è impostato nel membro Flags , 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 di PD_USEDEVMODECOPIESANDCOLLATE .
hInstance
Tipo: HINSTANCE
Se il flag PD_ENABLEPRINTTEMPLATE è impostato nel membro Flags , 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 Flags , hInstance è un handle su un oggetto memoria contenente un modello di finestra di dialogo. Se nessuno dei flag del modello è impostato nel membro Flags , 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 Flags .
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 nell'oggetto callback per IID_IPrintDialogCallback e IID_IObjectWithSite per determinare quali interfacce sono supportate.
Se non si vuole recuperare alcuna delle informazioni di callback, impostare lpCallback su NULL.
nPropertyPages
Tipo: DWORD
Numero di handle delle pagine delle proprietà nella matrice lphPropertyPages .
lphPropertyPages
Tipo: HPROPSHEETPAGE*
Contiene una matrice di handle di pagine delle proprietà da aggiungere al foglio delle proprietà Print . Le pagine delle proprietà aggiuntive seguono la pagina Generale . Usare la funzione CreatePropertySheetPage per creare queste pagine aggiuntive. Quando la funzione PrintDlgEx restituisce, sono stati eliminati tutti gli handle HPROPSHEETPAGE nella matrice lphPropertyPages . Se nPropertyPages è zero, lphPropertyPages deve essere NULL.
nStartPage
Tipo: DWORD
Pagina della proprietà visualizzata inizialmente. Per visualizzare la pagina Generale , specificare START_PAGE_GENERAL. In caso contrario, specificare l'indice in base zero di una pagina di proprietà nella matrice specificata nel membro lphPropertyPages . Per coerenza, è consigliabile avviare sempre il foglio 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 vuole applicare le modifiche apportate nel foglio 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 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.
Commenti
Se sia hDevMode che hDevNames sono NULL, PrintDlgEx inizializza il foglio delle proprietà usando la stampante predefinita corrente. Per inizializzare il foglio delle proprietà per una stampante diversa, usare il membro wDeviceOffset della struttura DEVNAMES per specificare il nome della stampante.
Si noti che il membro dmDeviceName della struttura DEVMODE specifica anche un nome della stampante. Tuttavia , dmDeviceName è limitato a 32 caratteri e il nome wDeviceOffset non è. Se i nomi wDeviceOffset e dmDeviceName non sono uguali, PrintDlgEx inizializza il foglio delle proprietà usando la stampante specificata da wDeviceOffset.
Se il flag di PD_RETURNDEFAULT è impostato e sia hDevMode che hDevNames sono NULL, PrintDlgEx usa i membrihDevNames e hDevMode per restituire informazioni sulla stampante predefinita corrente senza visualizzare la finestra di dialogo.
Durante l'esecuzione di PrintDlgEx, le strutture DEVMODE e DEVNAMES specificate nella struttura PRINTDLGEX potrebbero non contenere sempre dati correnti. Per questo motivo, le pagine delle proprietà specifiche dell'applicazione e le 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 preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.
Requisiti
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Intestazione | commdlg.h (includere Windows.h) |
Vedi anche
Libreria di finestre di dialogo comuni
Informazioni concettuali
Riferimento