DialogBoxIndirectParam

La funzione DialogBoxIndirectParam 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 della procedura di casella di dialogo come parametro lParam del messaggio WM_INITDIALOG . Un'applicazione può utilizzare questo valore per inizializzare i controlli casella di dialogo.

int (DialogBoxIndirectParam HINSTANCE , hInstance, / / handle all'istanza dell'applicazioneLPCDLGTEMPLATEhDialogTemplate,  / / identifica il modello di finestra di dialogoHWNDhWndParent, / / handle di finestra proprietariaDLGPROClpDialogFunc, / / puntatore alla finestra di dialogo scatola proceduraLPARAMdwInitParam / / valore di inizializzazione);
 

Parametri

hInstance
Identifica l'istanza del modulo che crea la finestra di dialogo.
hDialogTemplate
Puntatore a un oggetto memoria globale che contiene un modello che DialogBoxIndirectParam viene utilizzato per creare la finestra di dialogo. Un modello di finestra di dialogo è costituito da un'intestazione che descrive la finestra di dialogo, seguito da uno o più altri blocchi di dati che descrivono ciascuno dei controlli nella finestra di dialogo. Il modello può utilizzare il formato standard o il formato esteso.

In un modello standard per un dialogo, l'intestazione è una struttura DLGTEMPLATE seguita da ulteriori matrici a lunghezza variabile. I dati per ciascun controllo è costituito da una struttura DLGITEMTEMPLATE seguita da ulteriori matrici a lunghezza variabile.

In un modello esteso per un dialogo, l'intestazione utilizza il formato DLGTEMPLATEEX e le definizioni di controllo utilizzano il formato DLGITEMTEMPLATEEX.

hWndParent
Identifica la finestra che possiede la finestra di dialogo.
lpDialogFunc
Puntatore alla procedura di casella di dialogo. Per ulteriori informazioni sulla procedura di casella di dialogo, vedere DialogProc.
dwInitParam
Specifica il valore da passare alla finestra di dialogo nel parametro lParam del messaggio WM_INITDIALOG.

Valori restituiti

Se la funzione ha esito positivo, il valore restituito è il parametro nResult specificato nella chiamata alla funzione EndDialog utilizzato per chiudere la finestra di dialogo.

Se la funzione ha esito negativo, il valore restituito è – 1. Per ottenere informazioni di errore estese, chiamare GetLastError.

Osservazioni

La funzione DialogBoxIndirectParam utilizza la funzione CreateWindowEx per creare la finestra di dialogo. DialogBoxIndirectParam quindi invia un messaggio WM_INITDIALOG la procedura di casella di dialogo. Se il modello specifica lo stile DS_SETFONT, la funzione invia anche un messaggio WM_SETFONT alla procedura di casella di dialogo. La funzione viene visualizzata la finestra di dialogo (a prescindere dal fatto se il modello specifica lo stile WS_VISIBLE), disattiva la finestra proprietaria e inizia il proprio ciclo di messaggi per recuperare e spedire messaggi per la finestra di dialogo.

Quando la procedura di casella di dialogo chiama la funzione EndDialog , DialogBoxIndirectParam distrugge la finestra di dialogo, termina il ciclo di messaggi, consente la finestra proprietaria (se abilitato in precedenza) e restituisce il parametro nResult specificato dalla procedura di dialogo casella quando chiamato EndDialog.

In un modello di finestra di dialogo standard, la struttura DLGTEMPLATE e ciascuna delle strutture DLGITEMTEMPLATE deve essere allineati ai limiti DWORD . La matrice di dati di creazione che segue una struttura DLGITEMTEMPLATE deve anche essere allineata su un confine DWORD . Tutte le altre matrici di lunghezza variabile nel modello deve deve essere allineate limiti a parole.

In un modello di casella di dialogo esteso, l'intestazione DLGTEMPLATEEX e ognuna delle definizioni del controllo DLGITEMTEMPLATEEX deve essere allineati ai limiti DWORD . La creazione matrice di dati, se presente, che segue una struttura DLGITEMTEMPLATEEX deve essere allineato su un confine DWORD . Tutte le altre matrici di lunghezza variabile nel modello devono essere allineati secondo limiti a WORD.

Tutte le stringhe di caratteri nel modello casella di dialogo, come ad esempio i titoli per la finestra di dialogo e pulsanti, devono essere stringhe Unicode. Per creare codice che funziona su Windows e Windows NT, utilizzare la funzione MultiByteToWideChar per generare queste stringhe Unicode.

Windows 95 e più tardi:Il sistema può supportare un massimo di 255 controlli al modello di finestra di dialogo. Per inserire più di 255 controlli in una finestra di dialogo, creare i controlli nel gestore dei messaggi WM_INITDIALOG anziché collocarli nel modello.

Windows CE: Se l'utente preme ALT + H, mentre la finestra di dialogo ha lo stato attivo per l'input, il sistema invia un messaggio a WM_HELP la procedura di dialogo. Un'applicazione dovrebbe rispondere a questo messaggio visualizzando Guida sensibile al contesto per la finestra di dialogo.

Per altre restrizioni di dialogo, vedere CreateDialogIndirectParam.

Descrizione

nbsp; Windows &NT: richiede 3.1 o versione successiva.
Windows:Richiede Windows 95 o versioni successive.
Windows CE:Richiede la versione 1.0 o successiva.
Intestazione:Dichiarati in winuser.
Importare librerie:Utilizzare user32.lib.
Unicode:Implementato come versioni Unicode e ANSI su Windows NT.

Vedi anche

Panoramica di finestre di dialogo, finestra di dialogo casella funzioni, CreateWindowEx, DialogBox, DialogBoxIndirect, DialogBoxParam, DialogProc, DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, EndDialog, MultiByteToWideChar, WM_INITDIALOG, WM_SETFONT

Rimedio: Inserire il CD-ROM CD di MSDN Library.

Index