La macro CreateDialogIndirect crea una finestra di dialogo non modali da un modello di finestra di dialogo in memoria. La macro CreateDialogIndirect viene utilizzata la funzione CreateDialogIndirectParam.
(HWND CreateDialogIndirect HINSTANCE , hInstance, / / handle all'istanza dell'applicazioneLPCDLGTEMPLATElpTemplate, / / puntatore alla finestra di dialogo box modelloHWNDhWndParent, / / handle di finestra proprietariaDLGPROClpDialogFunc / / puntatore alla finestra di dialogo scatola procedura);
In un modello standard, 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 di casella di dialogo esteso l'intestazione utilizza il formato DLGTEMPLATEEX e le definizioni di controllo utilizzano il formato DLGITEMTEMPLATEEX.
Dopo CreateDialogIndirect restituisce, è possibile liberare il modello, che viene utilizzato solo per ottenere la finestra di dialogo avviato.
Se la funzione ha esito positivo, il valore restituito è l'handle di finestra di dialogo.
Se la funzione ha esito negativo, il valore restituito è NULL. Per ottenere informazioni di errore estese, chiamare GetLastError.
La macro CreateDialogIndirect utilizza la funzione CreateWindowEx per creare la finestra di dialogo. CreateDialogIndirect 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 Visualizza la finestra di dialogo se il modello specifica lo stile WS_VISIBLE. Infine, CreateDialogIndirect restituisce l'handle di finestra a finestra di dialogo.
Dopo CreateDialogIndirect restituisce, è possibile utilizzare la funzione ShowWindow per visualizzare la finestra di dialogo (se non è già visibile). Per distruggere la finestra di dialogo, utilizzare la funzione DestroyWindow.
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 . .
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.
Panoramica di finestre di dialogo, funzioni di Dialog Box, CreateDialog, CreateDialogIndirectParam, CreateDialogParam, CreateWindowEx, DestroyWindow, DialogProc, DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, MultiByteToWideChar, ShowWindow, WM_INITDIALOG, WM_SETFONT
Rimedio: Inserire il CD-ROM CD di MSDN Library.