CreateDialogIndirectParam

La funzione CreateDialogIndirectParam crea una finestra di dialogo non modali 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.

(HWND CreateDialogIndirectParam HINSTANCE , hInstance, / / handle all'istanza dell'applicazioneLPCDLGTEMPLATElpTemplate, / / puntatore alla finestra di dialogo box modelloHWNDhWndParent, / / handle di finestra proprietariaDLGPROClpDialogFunc, / / puntatore alla finestra di dialogo scatola proceduraLPARAMlParamInit / / valore di inizializzazione);
 

Parametri

hInstance
Identifica l'istanza del modulo che verrà creato nella finestra di dialogo.
lpTemplate
Puntatore a un oggetto memoria globale che contiene un modello che CreateDialogIndirectParam 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 CreateDialogIndirectParam 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.
lParamInit
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 è 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 funzione CreateDialogIndirectParam utilizza la funzione CreateWindowEx per creare la finestra di dialogo. CreateDialogIndirectParam 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, CreateDialogIndirectParam restituisce l'handle di finestra a finestra di dialogo.

Dopo CreateDialogIndirectParam 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: Finestre di dialogo fuori dall'area visibile dello schermo non vengono automaticamente riposizionati.

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.

I seguenti stili non sono supportati per il membro di stile della struttura DLGTEMPLATE :

Per ottenere il posizionamento predefinito, utilizzare lo stile DS_CENTER.

Se non viene specificato lo stile WS_CHILD, presuppone lo stile WS_POPUP.

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, CreateDialogIndirect, CreateDialogParam, CreateWindowEx, DestroyWindow, DialogProc, DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, MultiByteToWideChar, ShowWindow, WM_INITDIALOG, WM_SETFONT

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

Index