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

MFC Discussion :

Probleme C++ fenetre de confirmation


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Probleme C++ fenetre de confirmation
    Bonjour tout le monde,

    Je fais mes débuts en C++ et j'ai un petit problème au niveau d'un programme.
    Je cherche à afficher une fenetre de confirmation de fermeture de programme. Mon problème est que j'arrive à désactiver la fenetre du programme principal mais on peut encore cliquer sur celle ci. Je cherche donc a la rendre inactive completement.
    Voici l'extrait du code correspondant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void ProgMain::OnMenuProgClose() 
    { 
    if((::MessageBox(NULL,"Voulez-vous vraiment quitter ?","Prog2.0", MB_ICONQUESTION | MB_YESNO)==IDYES)) 
    { 
    EnableWindow(false); 
    CDialog::EndDialog( IDOK ) ; 
    } 
    else 
    { 
    EnableWindow(true); 
    } 
    }
    Je mis prends peut etre pas de la bonne façon, si quelqu'un pouvait me donner un coup de main.

    Merci

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Essaie ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if((MessageBox("Voulez-vous vraiment quitter ?","Prog2.0", MB_ICONQUESTION | MB_YESNO)==IDYES))

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Salut,

    J'ai essayé cette methode mais le probleme est que je n'arrive pas a rendre la fenetre de mon programme completement inactive (on peut encore cliquer dessus!).

    Merci pour ta réponse quand meme.

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    utilise AfxMessageBox ou rajoute le flag MB_TASKMODAL à ton MessageBox.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 100
    Points : 116
    Points
    116
    Par défaut
    Salut,

    ce qui est bizar c'est qu'un AfxMessageBox ou un MessageBox sont modal par défaut ?

    De quel type est ta classe ProgMain ?
    Pourquoi rendre ProgMain inactive avant de la fermer ?

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Salut,
    Je veux rendre la fenetre principale inactive afin qu'on soit obligé de répondre à la message box. J'y arrive avec le programme ci dessous, le problème est que lorqu'on répond non à la message box, le programme reste ouvert mais si une autre application est active, ma fenetre principale passe en arrière plan ce qui n'est pas génial.

    void GearodMain::OnMenuGearodClose()
    { EnableWindow(false);

    if((MessageBox(NULL,"Voulez-vous vraiment quitter Gearod 2.0 ?","Gearod 2.0", MB_ICONQUESTION | MB_YESNO)==IDYES))
    {
    CDialog::EndDialog( IDOK ) ;
    }
    else
    {
    EnableWindow(true);
    }
    }

    Voila, A+

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 100
    Points : 116
    Points
    116
    Par défaut
    Bonjour,

    je sais pas si cela peut t'aider mais avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SetWindowPos(&wndTop, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
    tu devrais pouvoir la raméner au 1er plan.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Merci pr vos réponses!

    Maintenant j'ai le code suivant:

    void GearodMain::OnMenuGearodClose()
    { EnableWindow(false);
    if((::MessageBox(NULL,"Voulez-vous vraiment quitter Gearod 2.0 ?","Gearod 2.0", MB_ICONQUESTION | MB_YESNO)==IDYES))
    {
    CDialog::EndDialog( IDOK ) ;
    }
    else
    {
    EnableWindow(true);
    SetWindowPos(&wndTop, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);

    }
    }

    Alors en effet avec la ligne supplémentaire (SetWindowPos...) la fenetre revient effectivement en 1er plan lorsqu'on répond "non" à la confirmation de sortie. Néanmoins, la boite de dialogue et la fenetre principale ne sont pas liées, je m'explique. Lorsque la messagebox s'affiche et qu'on bascule sur une autre application (Alt+Tab) pour y revenir ensuite, seule la messagebox s'affiche et la fenetre principale reste en 2nd plan.
    Si quelqu'un connaissait le remède à ce petit problème...

    Sinon MERCI pr vos réponses

    A+

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 100
    Points : 116
    Points
    116
    Par défaut
    Et si tu remplace le 1er param (qui est à NULL) de ::MessageBox par l'handle de ta fenêtre, qu'est-ce que ça donne ?

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Slt

    J'ai pigé ce que c'était un handle, mais malheuresemnt je n'arrive pas à mettre la valeur de la fenetre correspondante dans le MessageBox.
    Je suis novice en c++ alors j'ai essayé avec l'ID de la fenetre principale puis avec &wndTop (si j'ai bien compris c'est une valeur constante représentant la fenetre pricnipale, mais suis pas sur). Dans les 2 cas cela me fait des erreurs lors du build.

    Si quelqu'un pouvait m'expliquer ou troubver exaxtement l'handle de la fenetre pricnipale.
    Merci

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 100
    Points : 116
    Points
    116
    Par défaut
    L'handle de ta fenêtre courante est m_hWnd (plus exactemement this->m_hWnd).

    Par contre, je pense pas que ça résoude ton pb

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Si nickel sa a résolumon probleme avec l'handle de la fenetre principale.

    Merci A tous

    A+

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/05/2006, 21h26
  2. probleme execution(fenêtre gtk)
    Par argon dans le forum GTK+ avec C & C++
    Réponses: 15
    Dernier message: 01/05/2006, 11h25
  3. debutant: probleme aparition fenetre
    Par ptitom1381 dans le forum MFC
    Réponses: 2
    Dernier message: 06/04/2006, 14h38
  4. [PHP-JS] Fenetre de confirmation
    Par Seth77 dans le forum Langage
    Réponses: 2
    Dernier message: 10/02/2006, 23h43
  5. Probleme fermeture fenetre
    Par lemagicien dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 22/12/2005, 14h40

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