Struttura PRINTDLGA (commdlg.h)
Contiene informazioni usate dalla funzione PrintDlg per inizializzare la finestra di dialogo stampa. Dopo aver chiuso la finestra di dialogo, il sistema usa questa struttura per restituire informazioni sulle selezioni dell'utente.
Sintassi
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;
Members
lStructSize
Tipo: DWORD
Dimensioni della struttura, in byte.
hwndOwner
Tipo: HWND
Handle nella finestra che possiede la finestra di dialogo. Questo membro può essere qualsiasi handle di finestra valido oppure può essere NULL se la finestra di dialogo non ha alcun proprietario.
hDevMode
Tipo: HGLOBAL
Handle per un oggetto memoria globale mobile contenente una struttura DEVMODE . Se hDevMode non è NULL in input, è necessario allocare un blocco di memoria mobile per la struttura DEVMODE e inizializzare i relativi membri. La funzione PrintDlg usa i dati di input per inizializzare i controlli nella finestra di dialogo. Quando PrintDlg restituisce, i membri DEVMODE indicano l'input dell'utente.
Se hDevMode è NULL in input, PrintDlg alloca la memoria per la struttura DEVMODE , inizializza i membri per indicare l'input dell'utente e restituisce un handle che lo identifica.
Se il driver di dispositivo per la stampante specificata non supporta le modalità di dispositivo estese, hDevMode è NULL quando PrintDlg restituisce.
Se il nome del dispositivo (specificato dal membro dmDeviceName della struttura DEVMODE ) non viene visualizzato nella sezione [dispositivi] di WIN.INI, PrintDlg restituisce un errore.
Per altre informazioni sui membri hDevMode e hDevNames , vedere la sezione Osservazioni alla fine di questo argomento.
hDevNames
Tipo: HGLOBAL
Handle per un oggetto di memoria globale mobile contenente una struttura DEVNAMES . Se hDevNames non è NULL nell'input, è necessario allocare un blocco di memoria mobile per la struttura DEVNAMES e inizializzare i relativi membri. La funzione PrintDlg usa i dati di input per inizializzare i controlli nella finestra di dialogo. Quando PrintDlg 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, in tal caso PrintDlg alloca la memoria per la struttura DEVNAMES , inizializza i 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 in un contesto di dispositivo o in un contesto informativo, a seconda che il membro Flags specifica 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
Inizializza la finestra di dialogo Stampa . Quando la finestra di dialogo restituisce, imposta questi flag per indicare l'input dell'utente. Questo membro può essere uno o più dei valori seguenti.
Valore | Significato |
---|---|
|
Flag predefinito che indica che il pulsante di opzione Tutto è inizialmente selezionato. Questo flag viene usato come segnaposto per indicare che i flag PD_PAGENUMS e PD_SELECTION non sono specificati. |
|
Se questo flag è impostato, è selezionata la casella di controllo Collate .
Se questo flag viene impostato quando la funzione PrintDlg restituisce, l'applicazione deve simulare le regole di confronto di più copie. Per altre informazioni, vedere la descrizione del flag di PD_USEDEVMODECOPIESANDCOLLATE . Vedere PD_NOPAGENUMS. |
|
Disabilita la casella di controllo Stampa su file . |
|
Abilita la procedura di hook specificata nel membro lpfnPrintHook . In questo modo viene attivata la procedura di hook per la finestra di dialogo Stampa . |
|
Indica che i membri hInstance e lpPrintTemplateName specificano una sostituzione per il modello di finestra di dialogo Stampa predefinito. |
|
Indica che il membro hPrintTemplate identifica un blocco di dati contenente un modello di finestra di dialogo precaricati. Questo modello sostituisce il modello predefinito per la finestra di dialogo Stampa . Il sistema ignora il membro lpPrintTemplateName se questo flag è specificato. |
|
Abilita la procedura di hook specificata nel membro lpfnSetupHook . In questo modo viene attivata la procedura di hook per la finestra di dialogo Installazione stampa . |
|
Indica che i membri hInstance e lpSetupTemplateName specificano una sostituzione per il modello di finestra di dialogo Installazione stampa predefinito. |
|
Indica che il membro hSetupTemplate identifica un blocco di dati contenente un modello di finestra di dialogo precaricati. Questo modello sostituisce il modello predefinito per la finestra di dialogo Installazione stampa . Il sistema ignora il membro lpSetupTemplateName se questo flag è specificato. |
|
Nasconde la casella di controllo Stampa in file . |
|
Nasconde e disabilita il pulsante Rete . |
|
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 non è presente alcuna stampante predefinita. |
|
Se questo flag è impostato, viene selezionato il pulsante di opzione Pages . Se questo flag viene impostato quando la funzione PrintDlg restituisce, i membri nFromPage e nToPage indicano le pagine iniziali e finali specificate dall'utente. |
|
Consente al sistema di visualizzare la finestra di dialogo Imposta stampa anziché la finestra di dialogo Stampa . |
|
Se questo flag è impostato, è selezionata la casella di controllo Stampa su file . Se questo flag viene impostato quando la funzione PrintDlg 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 PrintDlg di restituire un contesto del dispositivo corrispondente alle selezioni effettuate dall'utente nella finestra di dialogo. Il contesto del dispositivo viene restituito in hDC. |
|
Se questo flag è impostato, la funzione PrintDlg non visualizza la finestra di dialogo. Imposta invece i membri hDevNames e hDevMode per gestire le strutture DEVMODE e DEVNAMES inizializzate per la stampante predefinita del sistema. Sia hDevNames che hDevMode devono essere NULL o PrintDlg 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 non viene impostato né PD_PAGENUMS né PD_SELECTION , viene selezionato il pulsante di opzione Tutto . |
|
Fa sì che la finestra di dialogo visualizzi il pulsante Guida . Il membro hwndOwner deve specificare la finestra per ricevere i messaggi registrati HELPMSGSTRING inviati dalla finestra di dialogo quando l'utente fa clic sul pulsante Guida . |
|
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 PRINTDLG 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 PRINTDLG 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. Problema noto in Windows 2000/XP/2003: Se questo flag non è impostato prima di chiamare PrintDlg, PrintDlg potrebbe scambiare valori nCopies e dmCopies quando restituisce. La soluzione alternativa per questo problema è usare dmCopies se il relativo valore è maggiore di 1, usare nCopies, per ottenere il numero effettivo di copie da stampare quando PrintDlg restituisce. |
Per assicurarsi che PrintDlg o PrintDlgEx restituisca i valori corretti nei membri dmCopies e dmCollate della struttura DEVMODE, impostare PD_RETURNDCTRUE 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_RETURNDCTRUE e PD_USEDEVMODECOPIESANDCOLLATE = = FALSE. In questo modo , dmCopies è sempre 1 e dmCollate è sempre FALSE.
In Windows Vista e Windows 7, 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 come 1 e usare l'hDC restituito per evitare la stampa di copie duplicate.
nFromPage
Tipo: WORD
Valore iniziale per il controllo di modifica della pagina iniziale.
Quando PrintDlg restituisce, nFromPage è la pagina iniziale specificata dall'utente. Se il pulsante di opzione Pages viene selezionato quando l'utente fa clic sul pulsante Okay , PrintDlg imposta il flag PD_PAGENUMS e non restituisce finché l'utente non immette un valore di pagina iniziale compreso nell'intervallo minimo di pagina massimo.
Se il valore di input per nFromPage o nToPage non è compreso nell'intervallo minimo/massimo, PrintDlg restituisce un errore solo se viene specificato il flag di PD_PAGENUMS ; in caso contrario, visualizza la finestra di dialogo, ma modifica il valore di intervallo esterno al valore minimo o massimo.
nToPage
Tipo: WORD
Valore iniziale per il controllo di modifica della pagina finale. Quando PrintDlg restituisce, nToPage è la pagina finale specificata dall'utente. Se il pulsante di opzione Pages viene selezionato quando l'uso fa clic sul pulsante Okay , PrintDlg imposta il flag PD_PAGENUMS e non restituisce finché l'utente non immette un valore di pagina finale compreso nell'intervallo minimo di pagina massimo.
nMinPage
Tipo: WORD
Valore minimo per l'intervallo di pagine specificato nei controlli Modifica pagina da e a . Se nMinPage è uguale a nMaxPage, il pulsante di opzione Pages e i controlli di modifica della pagina iniziale e finale della pagina sono disabilitati.
nMaxPage
Tipo: WORD
Valore massimo per l'intervallo di pagine specificato nei controlli Modifica pagina da e a .
nCopies
Tipo: WORD
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 PrintDlgrestituisce, nCopies contiene il numero effettivo di copie da 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 o PD_ENABLESETUPTEMPLATE è 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 o lpSetupTemplateName.
lCustData
Tipo: LPARAM
Dati definiti dall'applicazione che il sistema passa alla procedura di hook identificata dal membro lpfnPrintHook o lpfnSetupHook. Quando il sistema invia il messaggio di WM_INITDIALOG alla procedura di hook, il parametro lParam del messaggio è un puntatore alla struttura PRINTDLG specificata al momento della creazione della finestra di dialogo. La procedura di hook può usare questo puntatore per ottenere il valore lCustData .
lpfnPrintHook
Tipo: LPPRINTHOOKPROC
Puntatore a una routine di hook PrintHookProc che può elaborare i messaggi destinati alla finestra di dialogo Stampa . Questo membro viene ignorato a meno che il flag di PD_ENABLEPRINTHOOK non sia impostato nel membro Flags .
lpfnSetupHook
Tipo: LPSETUPHOOKPROC
Puntatore a una routine di hook SetupHookProc che può elaborare i messaggi destinati alla finestra di dialogo Installazione stampa . Questo membro viene ignorato a meno che il flag di PD_ENABLESETUPHOOK non sia impostato nel membro Flags .
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 Stampa predefinito. Questo membro viene ignorato a meno che il flag di PD_ENABLEPRINTTEMPLATE non sia impostato nel membro Flags .
lpSetupTemplateName
Tipo: LPCTSTR
Nome della risorsa modello della finestra di dialogo nel modulo identificato dal membro hInstance . Questo modello sostituisce il modello di configurazione di stampa predefinito. Questo membro viene ignorato a meno che il flag di PD_ENABLESETUPTEMPLATE sia impostato nel membro Flags .
hPrintTemplate
Tipo: HGLOBAL
Se il flag PD_ENABLEPRINTTEMPLATEHANDLE è impostato nel membro Flags , hPrintTemplate è un handle su un oggetto memoria contenente un modello di finestra di dialogo. Questo modello sostituisce il modello di finestra di dialogo Stampa predefinito.
hSetupTemplate
Tipo: HGLOBAL
Se il flag di PD_ENABLESETUPTEMPLATEHANDLE è impostato nel membro Flags , hSetupTemplate è un handle su un oggetto memoria contenente un modello di finestra di dialogo. Questo modello sostituisce il modello predefinito della finestra di dialogo Imposta stampante .
Commenti
Se sia hDevMode che hDevNames sono NULL, PrintDlg inizializza la finestra di dialogo utilizzando la stampante predefinita corrente. Per inizializzare la finestra di dialogo 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 di stampante. Tuttavia, dmDeviceName è limitato a 32 caratteri e il nome wDeviceOffset non è. Se i nomi wDeviceOffset e dmDeviceName non sono uguali, PrintDlg inizializza la finestra di dialogo usando la stampante specificata da wDeviceOffset.
Se il flag PD_RETURNDEFAULT è impostato e sia hDevMode che hDevNames sono NULL, PrintDlg usa i membri hDevNames e hDevMode per restituire informazioni sulla stampante predefinita corrente senza visualizzare la finestra di dialogo.
Nota
L'intestazione commdlg.h definisce PRINTDLG 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 che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.
Requisiti
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Intestazione | commdlg.h (include Windows.h) |
Vedi anche
Libreria delle finestre di dialogo comuni
Informazioni concettuali
Riferimento