DialogBoxIndirect

La macro DialogBoxIndirect crea una finestra di dialogo modale da un modello di finestra di dialogo in memoria. DialogBoxIndirect non restituisce il controllo fino a quando la funzione di callback specificato termina nella finestra di dialogo modale chiamando la funzione EndDialog . La macro DialogBoxIndirect viene utilizzata la funzione DialogBoxIndirectParam.

int (DialogBoxIndirect HINSTANCE , hInstance, / / handle all'istanza dell'applicazioneLPDLGTEMPLATElpTemplate, / / identifica il modello di finestra di dialogoHWNDhWndParent, / / handle di finestra proprietariaDLGPROClpDialogFunc / / puntatore alla finestra di dialogo scatola procedura);
 

Parametri

hInstance
Identifica l'istanza del modulo che crea la finestra di dialogo.
lpTemplate
Puntatore a un oggetto memoria globale che contiene un modello che DialogBoxIndirect 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.

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 macro DialogBoxIndirect utilizza la funzione CreateWindowEx per creare la finestra di dialogo. DialogBoxIndirect 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 , DialogBoxIndirect 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: Non tutti gli stili sono supportati nella struttura DLGTEMPLATE nel modello di dialogo cui fa riferimento il parametro lpTemplate . .

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, DialogBoxIndirectParam, DialogBoxParam, DialogProc, DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, EndDialog, MultiByteToWideChar, WM_INITDIALOG, WM_SETFONT

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

Index