Bien que le MessageBox se trouvant dans user32.dll, existe-t-il une fonction permettant d'ouvrir une dialog pour récupérer une chaine de caractères ?
Bien que le MessageBox se trouvant dans user32.dll, existe-t-il une fonction permettant d'ouvrir une dialog pour récupérer une chaine de caractères ?
Un petit up, paske ça m'interesse aussi...
À ma connaissance, il n'en existe pas.
Les Common Dialogs (comdlg32.dll) sont généralement plus complexes (choix d'un fichier, choix d'une couleur) et je ne crois pas qu'il y a un simple input de texte dans le lot...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
C'est bien dommage !
Et sans utiliser les MFC, est-il possible de construire une telle boite de dialogue ?
Oui. Tu peux la construire en ressources, ou carrément utiliser un DLGTEMPLATE ou DLGTEMPLATEEX en mémoire.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
À moins d'avoir quelque chose de prêt, il ne sera pas facile de créer une telle boîte de dialogue sans fichier de ressources. Si utiliser un fichier de ressources te convient, tu peux ignorer ce post.
Si tu es bon en C++ et que tu comprends les templates, tu peux essayer avec les templates que j'ai posté dans ce thread:Pour faire une boîte de dialogue qui demande du texte, il faudrait rajouter un Edit et un bouton OK. Donc, rajouter deux t_dialogItemTemplateExHolder dans la structure et les initialiser avec les bonnes valeurs.
http://www.developpez.net/forums/sho...d.php?t=202501
Malheureusement, c'est assez horrible et j'ai oublié de fournir un exemple d'utilisation. En voici un pour une boîte de dialogue avec un simple "static text" dedans :
Les templates utilisés prennent uniquement des chiffres en paramètres, qui sont des tailles. En effet, les données en mémoire comportent des structures à taille variable, donc...
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 static struct st_waitDlog { NsFredUtil::t_dialogTemplateExWithFontHolder< 1, 1, 22, NsFredUtil::MS_SHELL_DLG__SIZE > dlg; NsFredUtil::t_dialogItemTemplateExHolder< 2, 8 > item1; } g_waitDlog = { {{ //dlg: t_dialogTemplateExHolder, tpl: t_dialogTemplateEx { //header: ST_DLGTEMPLATEEXHEADER 1, 0xFFFF, 0L, 0L, DS_SETFONT | DS_MODALFRAME | DS_NOFAILCREATE | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE, 1, 0, 0, 135, 46 }, { 0x0000 }, { 0x0000 }, L"Veuillez patienter...", { {8, FW_NORMAL, 0, DEFAULT_CHARSET}, L"MS Shell Dlg" } }}, {{ //item: t_dialogItemTemplateExHolder, tpl: t_dialogItemTemplateEx { //header: ST_DLGITEMTEMPLATEEXHEADER 0L, 0L, WS_CHILD | SS_CENTER | WS_VISIBLE, 7,7,120,19, IDC_TEXT, 0 }, { 0xFFFF, 0x0082 }, L"(texte)", 0 }} }; //Et ça s'utilise ainsi pour CreateDialog() : HWND hDlg = CreateDialogIndirectParam( GetModuleHandle(NULL), reinterpret_cast< LPDLGTEMPLATE >(&g_waitDlog), hParent, DialogProc, reinterpret_cast< LPARAM >(sczTexte) ); //Il est assez facile de faire un DialogBoxIndirect() à la place.
Le mieux, c'est d'avoir la doc des DLGTEMPLATEEX et DLGITEMTEMPLATEEX sous les yeux...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Je vais fouiller cela...
Merci pour tout !
Partager