Share via


Funzione CreateDialogIndirectParamA (winuser.h)

Crea una finestra di dialogo senza modalità da un modello di finestra di dialogo in memoria. Prima di visualizzare la finestra di dialogo, la funzione passa un valore definito dall'applicazione alla procedura della finestra di dialogo come parametro lParam del messaggio di WM_INITDIALOG . Un'applicazione può usare questo valore per inizializzare i controlli della finestra di dialogo.

Sintassi

HWND CreateDialogIndirectParamA(
  [in, optional] HINSTANCE       hInstance,
  [in]           LPCDLGTEMPLATEA lpTemplate,
  [in, optional] HWND            hWndParent,
  [in, optional] DLGPROC         lpDialogFunc,
  [in]           LPARAM          dwInitParam
);

Parametri

[in, optional] hInstance

Tipo: HINSTANCE

Handle per il modulo che contiene il modello della finestra di dialogo. Se questo parametro è NULL, viene usato il file eseguibile corrente.

[in] lpTemplate

Tipo: LPCDLGTEMPLATE

Il modello CreateDialogIndirectParam usa 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 CreateDialogIndirectParam , è 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.

[in] dwInitParam

Tipo: LPARAM

Valore da passare alla finestra di dialogo nel parametro lParam del messaggio di WM_INITDIALOG .

Valore restituito

Tipo: HWND

Se la funzione ha esito positivo, il valore restituito è l'handle della finestra nella finestra di dialogo.

Se la funzione ha esito negativo, il valore restituito è NULL. Per informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

La funzione CreateDialogIndirectParam usa la funzione CreateWindowEx per creare la finestra di dialogo. CreateDialogIndirectParam 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, CreateDialogIndirectParam restituisce l'handle della finestra nella finestra di dialogo.

Dopo aver restituito CreateDialogIndirectParam , è 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.

Nota

L'intestazione winuser.h definisce CreateDialogIndirectParam 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

   
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
Set di API ext-ms-win-ntuser-dialogbox-l1-1-0 (introdotto in Windows 8)

Vedi anche

Informazioni concettuali

CreateDialog

CreateDialogIndirect

CreateDialogParam

CreateWindowEx

DLGITEMTEMPLATE

DLGITEMTEMPLATEEX

DLGTEMPLATE

DLGTEMPLATEEX

Destroywindow

Finestre di dialogo

DialogProc

MultiByteToWideChar

Altre risorse

Riferimento

Showwindow

WM_INITDIALOG

WM_SETFONT