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 :

progressbar et boite de dialogue


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 16
    Par défaut progressbar et boite de dialogue
    bonjour
    en c++ avec MFC
    j'ai crée un control progressbar sur une fenetre de dialogue
    je voudrais qu'après l'ouverture de ma boite de dialogue la barre de progression s'incremente automatique jusqu'a la fin et ferme la fenetre.

    -je sais incrementer la progressbar avec m_progress.SetPos(i);
    mais dans quel fonction de la classe CDialog faut il mettre le code pour que la barre s'increment automatiquement apres l'affichage? (InitDialog est executé avant l'affichage...)

    -si c'est possible je voudrais controler la barre de progression dans la fenetre de dialogue fille depuis la fenetre mere.
    j'avais pensé faire quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CDialog* Dlg = new CDialog;
    Dlg->DoModal();
    Dlg->m_progress.SetPos(i);
    mais sans succès!

    merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 32
    Par défaut
    Tu peux faire une incrémentation périodique à l'aide d'un timer mais c'est très moyen (voire nul), car il faut évaluer le temps total de l'opération pour régler l'intervalle de temps et le pas d'incrément. Cela va fonctionner à peu près à charge constante sur ta machine et cela sera complètement décalé sur une machine de puissance/charge différente.

    Tu peux aussi rajouter dans ta boucle de traitement un appel périodique à PeekMessage, ce qui fonctionne correctement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (::PeekMessage(&l_oMessage, NULL, 0, 0, PM_REMOVE))	\
    {
        ::TranslateMessage(&l_oMessage);
        ::DispatchMessage(&l_oMessage);
    }
    Et enfin sortir l'artillerie lourde en créant un thread pour l'affichage de ta boite de dialogue avec le CProgressBar, mais il faut que cela en vaille la peine. Tu trouveras des exemples sur CodeGuru/CodeProject

    Dlg->DoModal();
    Dlg->m_progress.SetPos(i); ne sert à rien car le SetPos est traité après la fermeture de la boite de dialogue !

    A+

Discussions similaires

  1. Pb plusieurs boites de dialogues
    Par schnito dans le forum MFC
    Réponses: 10
    Dernier message: 25/02/2004, 21h44
  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