Funzione DialogBoxIndirectParamA (winuser.h)
Crea una finestra di dialogo modale da un modello di finestra di dialogo in memoria. Prima di visualizzare la finestra di dialogo, la funzione passa un valore definito dall'applicazione alla routine della finestra di dialogo come parametro lParam del messaggio WM_INITDIALOG . Un'applicazione può usare questo valore per inizializzare i controlli della finestra di dialogo.
Sintassi
INT_PTR DialogBoxIndirectParamA(
[in, optional] HINSTANCE hInstance,
[in] LPCDLGTEMPLATEA hDialogTemplate,
[in, optional] HWND hWndParent,
[in, optional] DLGPROC lpDialogFunc,
[in] LPARAM dwInitParam
);
Parametri
[in, optional] hInstance
Tipo: HINSTANCE
Handle per il modulo che crea la finestra di dialogo.
[in] hDialogTemplate
Tipo: LPCDLGTEMPLATE
Modello usato da DialogBoxIndirectParam per creare la finestra di dialogo. Un modello di finestra di dialogo è costituito da un'intestazione che descrive la finestra di dialogo, seguita da uno o più blocchi di dati aggiuntivi che descrivono ognuno dei controlli nella finestra di dialogo. Il modello può usare il formato standard o il formato esteso.
In un modello standard per una finestra di dialogo, l'intestazione è una struttura DLGTEMPLATE seguita da matrici a lunghezza variabile aggiuntive. I dati per ogni controllo sono costituiti da una struttura DLGITEMTEMPLATE seguita da matrici a lunghezza variabile aggiuntive.
In un modello esteso per una finestra di dialogo, l'intestazione usa il formato DLGTEMPLATEEX e le definizioni di controllo usano il formato DLGITEMTEMPLATEEX .
[in, optional] hWndParent
Tipo: HWND
Handle per la finestra proprietaria della finestra di dialogo.
[in, optional] lpDialogFunc
Tipo: DLGPROC
Puntatore alla procedura della finestra di dialogo. Per altre informazioni sulla procedura della finestra di dialogo, vedere DialogProc.
[in] dwInitParam
Tipo: LPARAM
Valore da passare alla finestra di dialogo nel parametro lParam del messaggio WM_INITDIALOG .
Valore restituito
Tipo: INT_PTR
Se la funzione ha esito positivo, il valore restituito è il parametro nResult specificato nella chiamata alla funzione EndDialog usata per terminare la finestra di dialogo.
Se la funzione ha esito negativo perché il parametro hWndParent non è valido, il valore restituito è zero. La funzione restituisce zero in questo caso per la compatibilità con le versioni precedenti di Windows. Se la funzione ha esito negativo per qualsiasi altro motivo, il valore restituito è -1. Per informazioni dettagliate sull'errore, chiamare GetLastError.
Commenti
La funzione DialogBoxIndirectParam usa la funzione CreateWindowEx per creare la finestra di dialogo. DialogBoxIndirectParam invia quindi un messaggio WM_INITDIALOG alla procedura della finestra di dialogo. Se il modello specifica lo stile DS_SETFONT o DS_SHELLFONT, la funzione invia anche un messaggio WM_SETFONT alla routine della finestra di dialogo. La funzione visualizza la finestra di dialogo , indipendentemente dal fatto che il modello specifichi lo stile di WS_VISIBLE , disabilita la finestra del proprietario e avvia il proprio ciclo di messaggi per recuperare e inviare messaggi per la finestra di dialogo.
Quando la routine della finestra di dialogo chiama la funzione EndDialog , DialogBoxIndirectParam elimina definitivamente la finestra di dialogo, termina il ciclo di messaggi, abilita la finestra proprietario (se abilitata in precedenza) e restituisce il parametro nResult specificato dalla routine della finestra di dialogo quando viene chiamato EndDialog.
In un modello di finestra di dialogo standard, la struttura DLGTEMPLATE e ognuna delle strutture DLGITEMTEMPLATE deve essere allineata sui limiti DWORD . La matrice di dati di creazione che segue una struttura DLGITEMTEMPLATE deve essere allineata anche su un limite DWORD . Tutte le altre matrici a lunghezza variabile nel modello devono essere allineate ai limiti di WORD .
In un modello di finestra di dialogo esteso, l'intestazione DLGTEMPLATEEX e ognuna delle definizioni di controllo DLGITEMTEMPLATEEX deve essere allineata ai limiti DWORD . La matrice di dati di creazione, se presente, che segue una struttura DLGITEMTEMPLATEEX deve essere allineata anche su un limite DWORD . Tutte le altre matrici a lunghezza variabile nel modello devono essere allineate ai limiti di WORD .
Tutte le stringhe di caratteri nel modello della finestra di dialogo, ad esempio i titoli per la finestra di dialogo e i pulsanti, devono essere stringhe Unicode.
Nota
L'intestazione winuser.h definisce DialogBoxIndirectParam 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
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | winuser.h (include Windows.h) |
Libreria | User32.lib |
DLL | User32.dll |
Set di API | ext-ms-win-ntuser-dialogbox-l1-1-0 (introdotto in Windows 8) |
Vedi anche
Informazioni concettuali
Riferimento