Condividi tramite


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 di 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 utilizzato 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 utilizzano il formato DLGITEMTEMPLATEEX.

[in, optional] hWndParent

Tipo: HWND

Handle per la finestra proprietaria della finestra di dialogo.

[in, optional] lpDialogFunc

Tipo: DLGPROC

Puntatore alla routine 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 di 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 utilizzata 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 ottenere informazioni estese sull'errore, chiamare GetLastError.

Osservazioni

La funzione dialogBoxIndirectParam usa la funzione CreateWindowEx per creare la finestra di dialogo. DialogBoxIndirectParam quindi invia un messaggio di WM_INITDIALOG alla routine 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 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 WORD.

In un modello di finestra di dialogo estesa, 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 un struttura DLGITEMTEMPLATEEX deve essere allineata anche su un limite DWORD. Tutte le altre matrici a lunghezza variabile nel modello devono essere allineate ai limiti 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 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]
piattaforma di destinazione Finestre
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)

Vedere anche

concettuale

CreateWindowEx

DLGITEMTEMPLATE

DLGITEMTEMPLATEEX

DLGTEMPLATE

DLGTEMPLATEEX

finestre di dialogo

DialogBox

DialogBoxIndirect

DialogBoxParam

DialogProc

EndDialog

riferimento

WM_INITDIALOG

WM_SETFONT