Macro CreateDialogIndirectA (winuser.h)

Crea una finestra di dialogo senza modalità da un modello di finestra di dialogo in memoria. La macro CreateDialogIndirect usa la funzione CreateDialogIndirectParam.

Sintassi

void CreateDialogIndirectA(
  [in, optional]  hInstance,
  [in]            lpTemplate,
  [in, optional]  hWndParent,
  [in, optional]  lpDialogFunc
);

Parametri

[in, optional] hInstance

Tipo: HINSTANCE

Handle per il modulo che crea la finestra di dialogo.

[in] lpTemplate

Tipo: LPCDLGTEMPLATE

Modello usato da CreateDialogIndirect per creare la finestra di dialogo. Un modello di finestra di dialogo è costituito da un'intestazione che descrive la finestra di dialogo, seguita da uno o più blocchi aggiuntivi di dati che descrivono ognuno dei controlli nella finestra di dialogo. Il modello può usare il formato standard o il formato esteso.

In un modello standard, l'intestazione è una struttura DLGTEMPLATE seguita da matrici di lunghezza variabile aggiuntive. I dati per ogni controllo sono costituiti da una struttura DLGITEMTEMPLATE seguita da matrici di lunghezza variabile aggiuntive.

In un modello di finestra di dialogo estesa, l'intestazione usa il formato DLGTEMPLATEEX e le definizioni di controllo usano il formato DLGITEMTEMPLATEEX .

Dopo aver restituito CreateDialogIndirect , è possibile liberare il modello, usato solo per iniziare la finestra di dialogo.

[in, optional] hWndParent

Tipo: HWND

Handle nella finestra che possiede la finestra di dialogo.

[in, optional] lpDialogFunc

Tipo: DLGPROC

Puntatore alla procedura della finestra di dialogo. Per altre informazioni sulla procedura della finestra di dialogo, vedere DialogProc.

Valore restituito

nessuno

Osservazioni

La macro CreateDialogIndirect usa la funzione CreateWindowEx per creare la finestra di dialogo. CreateDialogIndirect invia quindi un messaggio WM_INITDIALOG alla procedura della finestra di dialogo. Se il modello specifica lo stile DS_SETFONT o DS_SHELLFONT , la funzione invia anche un messaggio WM_SETFONT alla procedura della finestra di dialogo. La funzione visualizza la finestra di dialogo se il modello specifica lo stile WS_VISIBLE. Infine, CreateDialogIndirect restituisce l'handle della finestra nella finestra di dialogo.

Dopo aver restituito CreateDialogIndirect , è possibile usare la funzione ShowWindow per visualizzare la finestra di dialogo ( se non è già visibile). Per eliminare la finestra di dialogo, usare la funzione DestroyWindow . Per supportare lo spostamento da tastiera e altre funzionalità della finestra di dialogo, il ciclo di messaggi per la finestra di dialogo deve chiamare la funzione IsDialogMessage .

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

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

Tutte le stringhe di caratteri nel modello della finestra di dialogo, ad esempio i titoli per la finestra di dialogo e i pulsanti, devono essere stringhe Unicode. Usare la funzione MultiByteToWideChar per generare stringhe Unicode da stringhe ANSI.

Nota

L'intestazione winuser.h definisce CreateDialogIndirect come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winuser.h (include Windows.h)
Libreria User32.lib
DLL User32.dll

Vedi anche

Informazioni concettuali

CreateDialog

CreateDialogIndirectParam

CreateDialogParam

CreateWindowEx

DLGITEMTEMPLATE

DLGITEMTEMPLATEEX

DLGTEMPLATE

DLGTEMPLATEEX

Destroywindow

Finestre di dialogo

DialogProc

IsDialogMessage

MultiByteToWideChar

Altre risorse

Riferimento

Showwindow

WM_INITDIALOG

WM_SETFONT