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 :

[MFC] Utilisation d'une progress bar


Sujet :

MFC

  1. #1
    Nouveau membre du Club Avatar de nmarf
    Inscrit en
    Mai 2003
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 92
    Points : 39
    Points
    39
    Par défaut [MFC] Utilisation d'une progress bar
    Bonjour,

    Suite à mon message précédent, j'ai décidé d'essayer de faire un projet tout simple pour essayer d'utiliser une scroll bar.

    Je souhaite afficher la progression d'un calcul long effectué dans une boucle.
    Si je place des SetPos() dans la boucle de calculs, la progression se fait normalement, mais si j'essaie d'utiliser les threads pour faire avancer la progress bar (fonction SetEvent() dans la boucle de calculs) je n'arrive à récupérer que le premier et le dernier évènement.
    J'ai essayé d'augmenter la priorité du thread, d'utiliser un timer pour scruter la progression du calcul, mais apparemment le calcul empêche les messages d'arriver normalement.

    Comment faire avancer cette fichu scroll bar ?

  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,
    il faut que dans la dialogue qui contient le progressbar tu fasses une fonction de mise a jour du progress et que tu rajoutes une pompe a message
    pour lui laisser le temps de se raffraichir.
    voir faq:
    http://c.developpez.com/faq/vc/?page...rk#PumpMessage

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    // -------------------------------------------------------------------  
    int MyProgressDlg::SetPos(int nPos)
    {
    	if(!m_hWnd) return 0;
    	if(nPos==-1)
    	{
    		m_nCount++;
    		if(m_nCount>m_nUpper) m_nCount=m_nLower;
    		nPos=m_nCount;
    	}
        PumpMessages(); // voir faq
        int iResult = m_Progress.SetPos(nPos);
        UpdatePercent(nPos);
        return iResult;
    }

  3. #3
    Nouveau membre du Club Avatar de nmarf
    Inscrit en
    Mai 2003
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 92
    Points : 39
    Points
    39
    Par défaut
    Ca fonctionne, merci beaucoup

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

Discussions similaires

  1. Barre de progression
    Par guy16 dans le forum PyQt
    Réponses: 12
    Dernier message: 29/05/2015, 13h32
  2. Utiliser une progress Bar en C#
    Par diabli73 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 20/07/2014, 13h07
  3. Utiliser une progress bar
    Par zerobug dans le forum C#
    Réponses: 7
    Dernier message: 27/06/2008, 16h39
  4. utilisation d'une progress bar avec un timer
    Par devock dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 22/12/2006, 13h57
  5. [VB.NET] Mise en place d'une progress bar
    Par Hoegaarden dans le forum Windows Forms
    Réponses: 14
    Dernier message: 19/10/2004, 10h23

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