CreateDialogIndirect

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);
 

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 CreateDialogIndirect 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, 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.

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 è l'handle di finestra di dialogo.

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

Osservazioni

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 . .

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, 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.

Index