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] problème status bar


Sujet :

MFC

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Par défaut [MFC] problème status bar
    Bonjour,

    J'ai rajouté un indicateur de graphe ID_INDICATOR_GRA dans MainFrm.cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    static UINT indicators[] =
    {
     ID_SEPARATOR,           // status line indicator
     ID_INDICATOR_GRA,
     ID_INDICATOR_CAPS,
     ID_INDICATOR_NUM,
     ID_INDICATOR_SCRL,
    };
    et j'ai rajouté le code suivant dans ma fonction OnDraw de ma View


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CString graphe;
     
    ...
     
    CMainFrame* pFrame = (CMainFrame*) AfxGetApp()->m_pMainWnd;
    CStatusBar* pStatus = &pFrame->m_wndStatusBar;
    pStatus->SetPaneInfo(1,ID_INDICATOR_GRA,SBPS_NORMAL,150);
    pStatus->SetPaneText(1, graphe);
    Le paneau de largeur 150 s'affiche bien, mais par contre, le nom du graphe s'affiche pendant une seconde puis disparaît. Pourquoi ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 13
    Par défaut
    Je sais pas trop quel information tu veux mettre dans la variable CString graphe;
    Et a quel moment tu veux mettre a jour la bar de status ?

    Mais, par exemple, tu peuts surcharge l'evenement WM_TIMER ( On Timer(...) ) de ta view et mettre ton code dedans.
    Faire aussi un SetTimer dans la function OnCreate(..) de la View

    De cette facon, ton indicateur de la statusbar sera mise a jour regulierement

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Par défaut
    Je veux mettre à jour la barre de status lorsque j'appelle la méthode UpdateAllViews( NULL ); (qui permet de mettre à jour ma formview et ma view) et c'est pour cela que j'ai mis mon code dans la fonction OnDraw().

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Par défaut
    C'est bon, j'ai résolu moi-même mon problème alors je vous en fais profiter :
    pour pouvoir ajouter et modifier des champs dans la barre d'état, il faut bien respecter ces 3 étapes :
    1) Ajouter un ID_INDICATOR_PERSO dans View-> resources symbols (en gardant de préférence la valeur attribuée par défaut à l'id)
    2) Ajouter dans String Table l'ID_INDICATOR_PERSO que l'on vient de créer (on va le chercher dans la liste)
    3) On rajoute la ligne ID_INDICATOR_PERSO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    static UINT indicators[] =
    {
    ID_SEPARATOR, // status line indicator
      ID_INDICATOR_CAPS,
      ID_INDICATOR_NUM,
      ID_INDICATOR_SCRL,
      ID_INDICATOR_PERSO,
    };
    Après, il suffit d'insérer le code suivant n'importe où

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     CMainFrame* pFrame = (CMainFrame*) AfxGetApp()->m_pMainWnd;
     CStatusBar* pStatus = &pFrame->m_wndStatusBar;
     pStatus->SetPaneInfo(4,ID_INDICATOR_PERSO,SBPS_NORMAL,150);
     pStatus->SetPaneText(4, "mon texte");

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Par défaut
    salut je sais que le topic date un peu mais je veux juste apporter une petite précision par rapport au poste précédent, dans un mdi classique le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CMainFrame* pFrame = (CMainFrame*) AfxGetApp()->m_pMainWnd;
     CStatusBar* pStatus = &pFrame->m_wndStatusBar;
     pStatus->SetPaneInfo(4,ID_INDICATOR_PERSO,SBPS_NORMAL,150);
     pStatus->SetPaneText(4, "mon texte");
    ne marchera pas "n'importe où" comme il est dit puisque l'attribut m_wndStatusBar est déclaré en protected dans le MainFrame.h, j'ai donc contourné cela en ajoutant une méthode dans le MainFrame.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void UpdateStatusBar (int nID, CString str) {m_wndStatusBar.SetPaneText(nID,str);}
    l'appel suivant peut alors être fait "n'importe où" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CMainFrame* pFrame = (CMainFrame*) AfxGetApp()->m_pMainWnd;
    	pFrame->UpdateStatusBar(1,"ca marche!!");
    voila c'était juse une petite précision pour aider les gens qui rencontreraient le même problème!

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

Discussions similaires

  1. Problème avec le BACK de la status bar
    Par Mel_rose dans le forum SAP
    Réponses: 3
    Dernier message: 23/09/2014, 10h38
  2. [MFC] Status bar
    Par fr_ed_er_ic dans le forum MFC
    Réponses: 5
    Dernier message: 21/07/2004, 15h12
  3. [MFC] Problème pointeur sur une classe
    Par mick74 dans le forum MFC
    Réponses: 7
    Dernier message: 14/04/2004, 14h17
  4. [MFC] Problème de pointeur !!
    Par acastor dans le forum MFC
    Réponses: 7
    Dernier message: 19/03/2004, 15h50
  5. [MFC] problème d'éxécution
    Par ben_iap dans le forum MFC
    Réponses: 2
    Dernier message: 15/03/2004, 10h31

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