DialogBoxIndirectParamA, fonction (winuser.h)
Crée une boîte de dialogue modale à partir d’un modèle de boîte de dialogue en mémoire. Avant d’afficher la boîte de dialogue, la fonction transmet une valeur définie par l’application à la procédure de boîte de dialogue en tant que paramètre lParam du message WM_INITDIALOG . Une application peut utiliser cette valeur pour initialiser des contrôles de boîte de dialogue.
Syntaxe
INT_PTR DialogBoxIndirectParamA(
[in, optional] HINSTANCE hInstance,
[in] LPCDLGTEMPLATEA hDialogTemplate,
[in, optional] HWND hWndParent,
[in, optional] DLGPROC lpDialogFunc,
[in] LPARAM dwInitParam
);
Paramètres
[in, optional] hInstance
Type : HINSTANCE
Handle du module qui crée la boîte de dialogue.
[in] hDialogTemplate
Type : LPCDLGTEMPLATE
Modèle utilisé par DialogBoxIndirectParam 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 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 qui possè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.
[in] dwInitParam
Type : LPARAM
Valeur à passer à la boîte de dialogue dans le paramètre lParam du message WM_INITDIALOG .
Valeur retournée
Type : INT_PTR
Si la fonction réussit, la valeur de retour est le paramètre nResult spécifié dans l’appel à la fonction EndDialog utilisée pour arrêter la boîte de dialogue.
Si la fonction échoue parce que le paramètre hWndParent n’est pas valide, la valeur de retour est zéro. La fonction retourne zéro dans ce cas pour la compatibilité avec les versions précédentes de Windows. Si la fonction échoue pour une autre raison, la valeur de retour est –1. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.
Remarques
La fonction DialogBoxIndirectParam utilise la fonction CreateWindowEx pour créer la boîte de dialogue. DialogBoxIndirectParam 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 ou non 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 , DialogBoxIndirectParam détruit la boîte de dialogue, met fin à la boucle du message, active la fenêtre propriétaire (si elle est activée précédemment) 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 doivent être alignées sur les limites DWORD . Le tableau de données de création qui suit une structure DLGITEMTEMPLATE doit également être aligné sur une limite DWORD . Tous les autres tableaux de longueur variable du modèle doivent être alignés sur les 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 doivent être alignées sur les limites DWORD . Le tableau de données de création, le cas échéant, qui suit une structure DLGITEMTEMPLATEEX doit également être aligné sur une limite DWORD . Tous les autres tableaux de longueur variable du modèle doivent être alignés sur les limites WORD .
Toutes les chaînes de caractères du 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.
Notes
L’en-tête winuser.h définit DialogBoxIndirectParam comme un 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.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | winuser.h (inclure Windows.h) |
Bibliothèque | User32.lib |
DLL | User32.dll |
Ensemble d’API | ext-ms-win-ntuser-dialogbox-l1-1-0 (introduit dans Windows 8) |
Voir aussi
Conceptuel
Référence