MessageBox --> utilisation? [Résolu]

Signaler
Messages postés
172
Date d'inscription
dimanche 10 décembre 2000
Statut
Membre
Dernière intervention
12 février 2009
-
Messages postés
172
Date d'inscription
dimanche 10 décembre 2000
Statut
Membre
Dernière intervention
12 février 2009
-
Bonsoir à tous,
    Récament, j'ai trouvé cette "fonction" dans un code :
MessageBox(0, test, 0, 0x3);
Je voudrais savoir comment on peu traiter la réponse que l'on met car selon les derniers chiffres (ici 0x3), on peu avoir des boîtes avec plusieur choix (abandonner, recommencer etc, etc...)
(récupérer ce sur quoi a cliqué l'user et en fonction de cela, pouvoir "l'aiguiller" différement

//Merci à tous de vous interesser à mon problème,Cordialement,

14 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Ben ca ne pose aucune problème pour qui maitrise les bases du C :

int retour = MessageBox(...);
if(retour == IDOK)
{
  L'utilisateur a cliqué sur OK
}

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
361
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
19 mars 2015

MessageBox n'est qu'une fonction qui retourne une valeur
il suffit de la récuperer :
http://msdn.microsoft.com/en-us/library/ms645505(VS.85).aspx
Messages postés
172
Date d'inscription
dimanche 10 décembre 2000
Statut
Membre
Dernière intervention
12 février 2009
2
Merci bcp mais, STP, pourrais-tu mettre un code exemple ou qqch dans ce genre car les trucs msdn j'y comprends rien!!! (les bouts de code où même les exemples copier/coller marche pas...)

Pour info avec le code exemple j'ai :
|In function `DisplayResourceNAMessageBox':|
|55|error: `MB_CANCELTRYCONTINUE' undeclared (first use in this function)|
|55|error: (Each undeclared identifier is reported only once|
|55|error: for each function it appears in.)|
|56|warning: passing arg 2 of `MessageBoxA' from incompatible pointer type|
|56|warning: passing arg 3 of `MessageBoxA' from incompatible pointer type|
|63|error: `IDTRYAGAIN' undeclared (first use in this function)|
|66|error: `IDCONTINUE' undeclared (first use in this function)||Build finished: 5 errors, 2 warnings|
(Je compile en C sous Code::Blocks)

//Merci à tous de vous interesser à mon problème,Cordialement,
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Ca veut dire que MB_CANCELTRYCONTINUE n'est pas déclaré.
Voici l'ensemble des constantes définies dans winuser.h. Tu vois que pour utiliser cette constante, il faut que WINVER >= 0x0500

/*
 * MessageBox() Flags
 */
#define MB_OK                       0x00000000L
#define MB_OKCANCEL                 0x00000001L
#define MB_ABORTRETRYIGNORE         0x00000002L
#define MB_YESNOCANCEL              0x00000003L
#define MB_YESNO                    0x00000004L
#define MB_RETRYCANCEL              0x00000005L
#if(WINVER >= 0x0500)
#define MB_CANCELTRYCONTINUE        0x00000006L
#endif /* WINVER >= 0x0500 */

#define MB_ICONHAND                 0x00000010L
#define MB_ICONQUESTION             0x00000020L
#define MB_ICONEXCLAMATION          0x00000030L
#define MB_ICONASTERISK             0x00000040L

#if(WINVER >= 0x0400)
#define MB_USERICON                 0x00000080L
#define MB_ICONWARNING              MB_ICONEXCLAMATION
#define MB_ICONERROR                MB_ICONHAND
#endif /* WINVER >= 0x0400 */

#define MB_ICONINFORMATION          MB_ICONASTERISK
#define MB_ICONSTOP                 MB_ICONHAND

#define MB_DEFBUTTON1               0x00000000L
#define MB_DEFBUTTON2               0x00000100L
#define MB_DEFBUTTON3               0x00000200L
#if(WINVER >= 0x0400)
#define MB_DEFBUTTON4               0x00000300L
#endif /* WINVER >= 0x0400 */

#define MB_APPLMODAL                0x00000000L
#define MB_SYSTEMMODAL              0x00001000L
#define MB_TASKMODAL                0x00002000L
#if(WINVER >= 0x0400)
#define MB_HELP                     0x00004000L // Help Button
#endif /* WINVER >= 0x0400 */

#define MB_NOFOCUS                  0x00008000L
#define MB_SETFOREGROUND            0x00010000L
#define MB_DEFAULT_DESKTOP_ONLY     0x00020000L

#if(WINVER >= 0x0400)
#define MB_TOPMOST                  0x00040000L
#define MB_RIGHT                    0x00080000L
#define MB_RTLREADING               0x00100000L

#endif /* WINVER >= 0x0400 */

#ifdef _WIN32_WINNT
#if (_WIN32_WINNT >= 0x0400)
#define MB_SERVICE_NOTIFICATION          0x00200000L
#else
#define MB_SERVICE_NOTIFICATION          0x00040000L
#endif
#define MB_SERVICE_NOTIFICATION_NT3X     0x00040000L
#endif

#define MB_TYPEMASK                 0x0000000FL
#define MB_ICONMASK                 0x000000F0L
#define MB_DEFMASK                  0x00000F00L
#define MB_MODEMASK                 0x00003000L
#define MB_MISCMASK                 0x0000C000L
_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
172
Date d'inscription
dimanche 10 décembre 2000
Statut
Membre
Dernière intervention
12 février 2009
2
Merci mais je suis sensé faire quoi!???
Ceci n'est pas plutôt pour pouvoir "traduire" en fonction de la valeur que retourne la boite?
Si oui ce que je cherche est de savoir la valeur que retourne la boite, et ensuite pouvoir l'interpréter.

//Merci à tous de vous interesser à mon problème,Cordialement,
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
La valeur retournée dépend du bouton sur lequel tu cliques (ex: IDOK pour OK, IDCANCEL pour Annuler...)
C'est écrit dans le lien qui t'a été donné plus haut :

IDABORT, Abort button was selected., ----
IDCANCEL, Cancel button was selected., ----
IDCONTINUE, Continue button was selected., ----
IDIGNORE, Ignore button was selected., ----
IDNO, No button was selected., ----
IDOK, OK button was selected., ----
IDRETRY, Retry button was selected., ----
IDTRYAGAIN, Try Again button was selected., ----
IDYES, Yes button was selected.

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
172
Date d'inscription
dimanche 10 décembre 2000
Statut
Membre
Dernière intervention
12 février 2009
2
Oui mais c'est la valeur retournée que je veu récupérer pour la stocker dans une variable...

//Merci à tous de vous interesser à mon problème,Cordialement,
Messages postés
172
Date d'inscription
dimanche 10 décembre 2000
Statut
Membre
Dernière intervention
12 février 2009
2
Merci beaucoup

//Merci à tous de vous interesser à mon problème,Cordialement,
Messages postés
172
Date d'inscription
dimanche 10 décembre 2000
Statut
Membre
Dernière intervention
12 février 2009
2
Meri ca fonctionne très bien
<hr size="2" width="100%" />Vecchio :
"Ben ca ne pose aucune problème pour qui maitrise les bases du C"
  +--?Tout le monde, même les meilleurs, passent par la case 'débutant'
 ???????????????????????????

//Merci à tous de vous interesser à mon problème,Cordialement,
Messages postés
172
Date d'inscription
dimanche 10 décembre 2000
Statut
Membre
Dernière intervention
12 février 2009
2
Les -- sont des caractères Unicodes non supportés, pour le msg précédent
//, Cordialement,
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Ce que je veux dire c'est que tu n'aurais jamais posé cette question si tu avais ouvert un bouquin de C

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
172
Date d'inscription
dimanche 10 décembre 2000
Statut
Membre
Dernière intervention
12 février 2009
2
A ce propos, les livres sont-ils mieux que les tutos?
Si oui, pourrais-tu me donner quelques (bonnes) références STP?

//Merci à tous de vous interesser à mon problème,Cordialement,
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
J'aurais tendance à dire que les livres sont mieux. Perso, j'ai le K&R qui est très bien (créé par les inventeurs du langage) : Le langage C : Norme ANSI
Sinon il y a celui de Claude Delannoy que je n'ai pas lu mais dont je n'ai entendu que tu bien : Programmer en langage C : Cours et exercices corrigés

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
172
Date d'inscription
dimanche 10 décembre 2000
Statut
Membre
Dernière intervention
12 février 2009
2
Merci je regarderais ca

//Cordialement,