IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

Obtenir la réponse d'une MessageBox


Sujet :

C++/CLI

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Hemophilius
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 105
    Par défaut Obtenir la réponse d'une MessageBox
    Voilà, j'ai été dans la FAQ et et chez Google mais je n'ai pas découvert réponse à ma question...
    Comment peut-on savoir quel bouton a été enfoncé par l'utilisateur dans un dialogue de type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    BOOL MessageBeep(MB_ICONEXCLAMATION);
    System::Windows::Forms::MessageBox::Show("Êtes vous sûr de vouloir continuer ? Toute donnée non-sauvegardée sera effacée.", "Confirmation", MessageBoxButtons::OKCancel, MessageBoxIcon::Question);
    ?

    J'ai essayé avec if (this->DialogResult == OK), mais il ne reconnait pas d'identificateurs OK. Pas de bol...
    Y aurait-il un moyen ?

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private: System::Void créerUnModèleToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
                if (this->TriggersRedactionSpace->Text == "")
                    this->sauvegarderLeModèleToolStripMenuItem->Enabled = true;
                else
                {
                    BOOL MessageBeep(MB_ICONEXCLAMATION); 
                    System::Windows::Forms::MessageBox::Show("Êtes vous sûr de vouloir continuer ? Toute donnée non-sauvegardée sera effacée.", "Confirmation", MessageBoxButtons::OKCancel, MessageBoxIcon::Question); 
                    if (this->ToString(DialogResult()) == "OK")
                        this->TriggersRedactionSpace->AppendText("Yes");
                    else
                        this->TriggersRedactionSpace->AppendText("Cancel");
                }
    (vous remarquerez que j'avais émis un beep ; hors, aucun son n'est émis... Et autre part dans mpon programme, quel que soit l'ID entre parenthèse, cela émet toujours le même bip de 'Attention' ("tiduti")).

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    il faut simplement utiliser les constantes adéquates :

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Sauf que ce n'est pas this->DialogResult qu'il faut tester, mais la valeur de retour de MessageBox::Show().
    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.

  4. #4
    Membre confirmé Avatar de Hemophilius
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 105
    Par défaut
    Je viens d'essayer comme vous m'avez dit. Et il y a deux erreur, quoi que je fasse :

    Erreur 3 error C2065: 'OK' : identificateur non déclaré c:\documents and settings\utilisateur\mes documents\visual studio 2008\projects\heroes v trigger editor\heroes v trigger editor\Form1.h 3179

    Erreur 2 error C2039: 'OK' : n'est pas membre de 'System::Windows::Forms::Form:ialogResult' c:\documents and settings\utilisateur\mes documents\visual studio 2008\projects\heroes v trigger editor\heroes v trigger editor\Form1.h 3179

    Puis j'ai regardé ce qui venait de l'intellisense quand je mettais simplement DialogResult::.
    Il apparaît seulement deux valeurs disponibles : "get" et "set".

    Médinoc, qu'entendais-tu par "la valeur de retour de MessageBox::Show" ? Est-ce ceci ? :
    DialogResult::get

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    OK, apparemment, ça vient d'un conflit de noms entre la propriété System.Windows.Forms.Forms:ialogResult et le type System.Windows.Forms.DialogResult.

    Tu dois donc comparer la valeur retournée par MessageBox::Show() à System::Windows::Forms:ialogResult::OK.

    Médinoc, qu'entendais-tu par "la valeur de retour de MessageBox::Show" ? Est-ce ceci ? :
    DialogResult::get
    Non, je vais t'expliquer lentement:
    MessageBox est une classe.
    Show() est une méthode de cette classe.
    Une méthode qui prend des paramètres et retourne une valeur.
    Cette valeur est de type System::Windows::Forms:ialogResult.
    Et cette valeur, tu devras la comparer à System::Windows::Forms:ialogResult::OK.
    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.

  6. #6
    Membre confirmé Avatar de Hemophilius
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 105
    Par défaut
    Merci beaucoup ! Je comprenais tout cela (+/-), avec méthodes classes etc, ce que je ne comprenais pas, c'est que la valeur à comparer avec System::Windows::Forms:ialogResult::OK était l'action d'afficher un message en elle même ^^
    Cela fonctionne maintenant, merci encore pour votre patience !

    Code définitif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                    BOOL MessageBeep(MB_ICONEXCLAMATION); 
                    ; 
                    if ((MessageBox::Show("Êtes vous sûr de vouloir continuer ? Toute donnée non-sauvegardée sera effacée.", "Confirmation", MessageBoxButtons::YesNo, MessageBoxIcon::Question)) == System::Windows::Forms::DialogResult::Yes)
                        this->TriggersRedactionSpace->AppendText("Yes");
                    else
                        this->TriggersRedactionSpace->AppendText("No");

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] afficher une question et en obtenir la réponse de l'utilisateur avec un GUI
    Par Angel30 dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 19/05/2009, 09h36
  2. Réponses: 5
    Dernier message: 19/07/2005, 21h54
  3. Réponses: 4
    Dernier message: 27/06/2005, 19h26
  4. Analyse de code HTML en réponse a une requête post.
    Par ghost942 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 04/06/2005, 21h40
  5. Réponses: 2
    Dernier message: 02/06/2005, 18h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo