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

Visual C++ Discussion :

Rafraichir une boite de dialogue


Sujet :

Visual C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 21
    Points : 26
    Points
    26
    Par défaut Rafraichir une boite de dialogue
    Bonjour,

    j'ai une application en mode boites de dialogue (Visual C++ 6.0).
    Une des boites contient une Progressbar que je mets à jour à l'aide de la fonction SetPos au fur et à mesure qu'une tâche s'exécute: ça marche très bien.
    Sauf que quand je bascule sur une autre application, quand je reviens sur ma fenêtre, elle n'est pas redessinée du tout.
    J'ai essayé de forcer le rafraîchissement de la boite de dialogue qui contient la progressbar avec Invalidate, InvalidateRect, UpdateWindow, UpdateData, ShowWindow, RedrawWindow, ... => Rien à faire, la boite de dialogue reste toujours toute blanche et attend la fin de la tâche avant de se réafficher correctement.

    Comment faire ?

  2. #2
    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,
    tu dois certainement avoir une boucle de traitement qui met à jour ton progressbar.
    et celle-ci ne laisse pas plus les messages windows parvenir a l'application...
    voir faq:http://cpp.developpez.com/faq/vc/ind...rk#PumpMessage

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 21
    Points : 26
    Points
    26
    Par défaut
    Compris, j'ai ajouté la fonction dans ma classe application comme suggéré et je l'appelle dans ma boucle par:
    ((CMyApp *)AfxGetApp())->PumpMessages();
    Merci pour la réponse et pour la FAQ, très bien faite, qui m'a déjà évité de poser une bonne dizaine de questions sur le forum.
    Sur ce problème, j'avais cherché principalement dans Classe Fenêtre (ch. 3), Contrôles (ch.4) et dans Boites de dialogue (5.5)
    Il est vrai que ce problème est plus global et pas forcément lié à une progress bar donc la question dans la FAQ est au bon endroit, néanmoins il doit se produire couramment avec les progress bar puisqu' a priori celles-ci sont utilisées lorsqu'on s'attend à avoir un traitement assez long.
    S'il y avait un chapitre ProgressBar dans la partie Contrôles avec éventuellement un lien vers ta fonction PumpMessages j'aurais trouvé tout seul.
    En tout cas merci bien.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/05/2004, 12h19
  2. [MFC] rendre une boite de dialogue inactive
    Par Vestaproman dans le forum MFC
    Réponses: 8
    Dernier message: 22/01/2004, 14h09
  3. Affichage d'une boite de dialogue nonmodale avec MFC
    Par the.cable.guy dans le forum Windows
    Réponses: 3
    Dernier message: 04/07/2003, 17h59
  4. Réponses: 5
    Dernier message: 04/04/2003, 15h02
  5. Comment cree une boite de dialogue parcourir
    Par kenshi dans le forum MFC
    Réponses: 5
    Dernier message: 06/01/2003, 10h30

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