Partager via


Macro DialogBoxIndirectW (winuser.h)

Crée une boîte de dialogue modale à partir d’un modèle de boîte de dialogue en mémoire. DialogBoxIndirect ne retourne pas le contrôle tant que la fonction de rappel spécifiée n’arrête pas la boîte de dialogue modale en appelant la fonction endDialog .

DialogBoxIndirect est implémenté en tant qu’appel à la fonction DialogBoxIndirectParam.

Syntaxe

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

Paramètres

[in, optional] hInstance

Type : HINSTANCE

Handle du module qui crée la boîte de dialogue.

[in] lpTemplate

Type : LPCDLGTEMPLATE

Modèle qui DialogBoxIndirect utilise pour créer la boîte de dialogue. Un modèle de boîte de dialogue se compose d’un en-tête qui décrit la boîte de dialogue, suivi d’un ou de plusieurs blocs de données supplémentaires qui décrivent chacun des contrôles de la boîte de dialogue. Le modèle peut utiliser le format standard ou le format étendu.

Dans un modèle standard pour une boîte de dialogue, l’en-tête est une structure DLGTEMPLATE suivie de tableaux de longueur variable supplémentaires. Les données de chaque contrôle se composent d’une structure DLGITEMTEMPLATE suivie de tableaux de longueur variable supplémentaires.

Dans un modèle étendu pour une boîte de dialogue, l’en-tête utilise le format DLGTEMPLATEEX et les définitions de contrôle utilisent le format DLGITEMTEMPLATEEX.

[in, optional] hWndParent

Type : HWND

Handle de la fenêtre propriétaire de la boîte de dialogue.

[in, optional] lpDialogFunc

Type : DLGPROC

Pointeur vers la procédure de boîte de dialogue. Pour plus d’informations sur la procédure de boîte de dialogue, consultez DialogProc.

Valeur de retour

Aucun

Remarques

La macro DialogBoxIndirect utilise la fonction CreateWindowEx pour créer la boîte de dialogue. DialogBoxIndirect envoie ensuite un message WM_INITDIALOG à la procédure de boîte de dialogue. Si le modèle spécifie le style DS_SETFONT ou DS_SHELLFONT, la fonction envoie également un message WM_SETFONT à la procédure de boîte de dialogue. La fonction affiche la boîte de dialogue (que le modèle spécifie le style WS_VISIBLE), désactive la fenêtre propriétaire et démarre sa propre boucle de message pour récupérer et distribuer des messages pour la boîte de dialogue.

Lorsque la procédure de boîte de dialogue appelle la fonction EndDialog , DialogBoxIn direct détruit la boîte de dialogue, met fin à la boucle de message, active la fenêtre propriétaire (si précédemment activée) et retourne le paramètre nResult spécifié par la procédure de boîte de dialogue lorsqu’elle a appelé EndDialog.

Dans un modèle de boîte de dialogue standard, la structure DLGTEMPLATE et chacune des structures DLGITEMTEMPLATE doit être alignée sur limites de DWORD. Le tableau de données de création qui suit une structure DLGITEMTEMPLATE doit également être alignée sur une limite DWORD. Tous les autres tableaux de longueur variable du modèle doivent être alignés sur limites WORD.

Dans un modèle de boîte de dialogue étendu, l’en-tête DLGTEMPLATEEX et chacune des définitions de contrôle DLGITEMTEMPLATEEX doit être alignée sur limites de DWORD. Le tableau de données de création, le cas échéant, qui suit une structure DLGITEMTEMPLATEEX doit également être alignée sur une limite DWORD. Tous les autres tableaux de longueur variable du modèle doivent être alignés sur limites WORD.

Toutes les chaînes de caractères dans le modèle de boîte de dialogue, telles que les titres de la boîte de dialogue et les boutons, doivent être des chaînes Unicode. Utilisez la fonction MultiByteToWideChar pour générer des chaînes Unicode à partir de chaînes ANSI.

Exemples

Pour obtenir un exemple, consultez Création d’un modèle en mémoire.

Note

L’en-tête winuser.h définit DialogBoxIndirect en tant qu’alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Exigences

Exigence Valeur
client minimum pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
serveur minimum pris en charge Windows 2000 Server [applications de bureau uniquement]
plateforme cible Windows
d’en-tête winuser.h (include Windows.h)
bibliothèque User32.lib
DLL User32.dll

Voir aussi

conceptuelle

CreateWindowEx

DLGITEMTEMPLATE

DLGITEMTEMPLATEEX

DLGTEMPLATE

DLGTEMPLATEEX

boîtes de dialogue

dialogBox

DialogBoxIndirectParam

DialogBoxParam

dialogProc

EndDialog

MultiByteToWideChar

autres ressources

de référence

WM_INITDIALOG

WM_SETFONT