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 :

Problème avec la fonction CMFCRibbonButton::SetText()


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 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 54
    Par défaut Problème avec la fonction CMFCRibbonButton::SetText()
    Bonjour à tous,

    Voila j'utilise les nouvelles MFC avec les Ribbon bar etc.

    J'initialise un CMFCRibbonLabel (qui dérive d'unCMFCRibbonButton) en lui mettant un texte.

    A un moment donné dans le programme j'intercepte un message pour rafraîchir ce qui est marqué dans ce label. Donc je fais tout naturellement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_pMyLabel->SetText(_T("Test"));
    Cela Remplace bien le texte comme prévu. Par contre j'ai remarqué que la variable m_sizeTextRight (appartenant à la classe CMFCRibbonButton) est réinitialisée et donc mon label n'apparait plus... (en regardant dans la fonction SetText des MFC cela remet bien cette variable à CSize(0,0)... En modifiant manuellement la variable le problème est résolu. Mais voila je ne trouve pas de fonction qui permet de le faire ....

    Quelqu'un aurait une idée ou bien ma façon de travailler n'est pas la bonne...

    Merci d'avance pour vos interventions.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 54
    Par défaut
    Rebonjour tout le monde,

    J'ai une nouvelle information concernant ce problème :

    En déclarant le label en multiligne j'ai le problème et en le déclarant en une seule ligne, il n'y a pas de problème...

    Même si dans les deux cas cette variable m_sizeTextRight est remise à CSize(0,0)...

    Mais évidement l'emploi du multiligne est vraiment nécessaire dans mon cas. Si quelqu'un a une idée, elle est la bienvenue.

    Merci d'avance pour vos réponses.

  3. #3
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    où exactement fais-tu ton SetText ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 54
    Par défaut
    Bonjour tout le monde,

    Merci TheGzD de ta réponse et désolé du retard.

    En fait j'intercepte un message à la fermeture d'une boite de dialogue.
    Ce message est interprété dans le MainFrm.cpp...

    Je ne sais pas si ça peut aider.

  5. #5
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Honnêtement, avec les infos que tu as fournies, je ne vois pas d'autre réponse qu'un mauvais paramétrage (ou un bug ce qui ne serait pas non plus surprenant ).
    Un peu plus de code, en particulier les appels du constructeur et de tous les setters que tu utilises sur le ribbon, seraient bienvenu.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 54
    Par défaut
    voila plus en détail le code que j'utilise :

    MainFrm.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CMFCRibbonBar			m_wndRibbonBar;
    CMFCRibbonCategory*		m_pSSelCategory;
    CMFCRibbonLabel*		m_pLBWaterCharInfo;
    MainFrm.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    // Individual selection group
    m_pSSelCategory = m_wndRibbonBar.AddCategory(_T("Test"),IDB_SMALL, IDB_LARGE);
    // Panel Water Characteristics
    CMFCRibbonPanel* pPanelWaterChar = m_pSSelCategory->AddPanel(_T("Title"));
     
    // Build new water characteristic strings
    m_pLBWaterCharInfo = new CMFCRibbonLabel(_T("test1"),0);
     
    pPanelWaterChar->Add(m_pLBWaterCharInfo);
    pPanelWaterChar->SetJustifyColumns();
    Puis dans la condition ou j'ai ouvert une boite de dialogue, que j'ai changé des infos et que je ferme la boite en cliquant sur "OK" j'ai une fonction qui envoie un message qui est interprété comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ON_MESSAGE(WM_USER_WATERCHANGE, OnWaterChange)
     
    LRESULT CMainFrame::OnWaterChange(WPARAM wParam, LPARAM lParam)
    {
    	m_pLBWaterCharInfo->SetText(_T("test2"));
    	return 0;
    }
    Dans ce cas présent la fonction SetText fonctionnera bien parce que le RibbonLabel est créé comme étant un SingleLigne (...new CMFCRibbonLabel(_T("test1"),0)

    En mettant un 1 au lieu du 0 cela fait passer le label en multiligne.
    Une fois le que l'on passe dans la fonction SetText, le label disparait...

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

Discussions similaires

  1. Problème avec une fonction date.
    Par kmayoyota dans le forum ASP
    Réponses: 8
    Dernier message: 09/09/2004, 12h33
  2. Problème avec la fonction findfirst ()
    Par Angelico dans le forum Windows
    Réponses: 3
    Dernier message: 05/08/2004, 20h40
  3. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24
  4. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04

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