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 :

Destruction automatique d'une fenêtre d'attente


Sujet :

MFC

  1. #1
    Membre du Club
    Inscrit en
    Avril 2002
    Messages
    48
    Points
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 48
    Points : 46
    Par défaut Destruction automatique d'une fenêtre d'attente
    Bonjour,

    Lors de la fermeture d'un fichier dans mon application, je dois d'abord arrêter un thread et, une fois le thread arrêté, je peux fermer mon fichier. Pour faire patienter l'utilisateur (entre le moment où il a choisi de fermer son fichier et le moment où je lui permets de le fermer), je fais apparaître une petite fenêtre (un CMyDialog) que je voudrais faire disparaître une fois le thread arrêté et ainsi fermer le fichier. La fenêtre devrait donc "s'auto-détruire" une fois que le test a réussi.

    D'abord, je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     CMyDialog dia;
    dia.DoModal();
    Ensuite, j'essaye de fermer le CMyDialog en mettant le test dans le OnPaint() ou le PreTranslateMessage() de la classe CMyDialog:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (testOK())
       OnCancel();
    mais le OnCancel() n'est exécuté que lorsque je passe ma souris sur la boîte de dialogue. Il manque donc quelque chose. Mais quoi?

    Des idées?

    Merci,
    Hugues

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Points
    17 323
    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
    Par défaut
    salut,
    comme fenetre d'attente je mettrai une boite de dialogue non modale .
    lors de la femeture du thread j'enverrai un message a la boite de dialogue pour lui signifier sa fermeture.
    voir aussi faq:
    http://c.developpez.com/faq/vc/?page...gPostNcDestroy

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Points
    41 593
    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 382
    Points : 41 593
    Par défaut
    Sinon, il est également possible de le faire avec une BDD modale, un Timer et une fonction OnTimer() qui teste si le thread est toujours actif avec ::WaitForSingleObject(hThread, 0)...
    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 du Club
    Inscrit en
    Avril 2002
    Messages
    48
    Points
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 48
    Points : 46
    Par défaut Destruction automatique d'une fenêtre d'attente
    OK, mais si ma boîte n'est pas modale, mon application n'est plus en attente du test sur la fermeture du thread; elle continue de s'exécuter et ferme le fichier avant que le test n'ai donné son autorisation de fermeture.

    Hugues.

  5. #5
    Membre du Club
    Inscrit en
    Avril 2002
    Messages
    48
    Points
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 48
    Points : 46
    Par défaut Destruction automatique d'une fenêtre d'attente
    J'ai implémenté la solution de Médinoc. Ca fonctionne.

    Merci,
    Hugues

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

Discussions similaires

  1. Ouverture automatique d'une fenêtre
    Par imad1903 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 20/02/2008, 12h43
  2. fermeture automatique d'une fenêtre.
    Par darkageof62 dans le forum Langage
    Réponses: 8
    Dernier message: 21/05/2007, 12h32
  3. [D5] Création d'une fenêtre d'attente
    Par MelkInarian dans le forum Delphi
    Réponses: 11
    Dernier message: 20/03/2007, 16h36
  4. Ouverture automatique d'une fenêtre modal
    Par lodan dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 17/09/2006, 23h24
  5. [C# 2]Affichage d'une fenêtre d'attente
    Par sarapis dans le forum Windows Forms
    Réponses: 6
    Dernier message: 03/06/2006, 01h18

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