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 :

[Ribbon bar] Pas d'event declanché en changeant une categorie


Sujet :

MFC

  1. #1
    Membre très actif Avatar de subzero01
    Inscrit en
    Décembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2007
    Messages : 281
    Par défaut [Ribbon bar] Pas d'event declanché en changeant une categorie
    Bonjour,
    Je suis en train de créer une application SDI avec ribbon bar.
    Je voudrais coder au moment où l'utilisateur change de catégorie, mais j'ai remarqué que les catégories du ribbon n'ont pas d'ID donc pas d'evenement programmable !
    Ai-je manqué quelque chose ?
    Je passe maintenant a la création manuelle de cet event (thread ecouteur sur la categorie selectionnée...) mais j'aimerais bien savoir pourquoi Microsoft n'a pas prévu cet event qui me parait important.
    Merci a vous.

  2. #2
    Membre très actif Avatar de subzero01
    Inscrit en
    Décembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2007
    Messages : 281
    Par défaut
    Avant de passer a la solution des threads j'ai trouvé le message AFX_WM_ON_CHANGE_RIBBON_CATEGORY qui est envoyé par le ribbon vers la fenetre principale (a ce que j'ai compris), pour tester j'ai utilisé spy++ et en effet c'est le cas.
    Mais en essayant d'intercepter le msg dans CMainFrame, la methode d'interception n'est jamais invoquée !
    voici la methode que j'utilise pour tout cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    	ON_MESSAGE(AFX_WM_ON_CHANGE_RIBBON_CATEGORY,&CMainFrame::OnRibbonCatChange)
    END_MESSAGE_MAP()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    LRESULT CMainFrame::OnRibbonCatChange(WPARAM wParam, LPARAM lParam)
    {
    	TRACE("appel a la methode !!!!!!\n");
    	return 0;
    }
    Merci de me guider si vous remarquez quelque chose d'anormal.

  3. #3
    Membre très actif Avatar de subzero01
    Inscrit en
    Décembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2007
    Messages : 281
    Par défaut
    Bonjour,
    j'ai résolu mon problème en surchageant WindowProc dans CMainFrame !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
    {
    	if(message==AFX_WM_ON_CHANGE_RIBBON_CATEGORY)
    		return OnRibbonCatChange(wParam,lParam);
    	return CFrameWndEx::WindowProc(message, wParam, lParam);
    }

  4. #4
    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
    Attention tout de même, car là tu as complètement court-circuité la gestion de ce message par les classes parentes de ta fenêtre. Il se peut donc que certains comportements que tu jugeais acquis avant ta modification ne se fassent plus ...

    Il faudrait mieux, si c'est possible, que tu trouves quelle fonction au niveau des classes parentes est déclenchée par ce message et que tu la surcharges (en commençant par faire appel au traitement du parent puis en rajoutant le tien à la suite).

    Tu vois ce que je veux dire ?

  5. #5
    Candidat au Club
    Inscrit en
    Novembre 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 3
    Par défaut Tu peux faire un SetData sur category
    Pour récupérer la catégorie tu peux utiliser SetData

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    const DWORD idTabDefault = 100;
    pCategoryDefault->SetData(idTabDefault);
     
    int index  = m_wndRibbonBar->FindCategoryIndexByData(idTabDefault);
    if(index >=0)
    {
    CMFCRibbonCategory* pCategoryDefault = m_wndRibbonBar->GetCategory(index);
    m_wndRibbonBar->SetActiveCategory(pCategoryDefault);
    }

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

Discussions similaires

  1. Introduire le ribbon bar
    Par raphchar dans le forum C++/CLI
    Réponses: 0
    Dernier message: 17/06/2010, 21h11
  2. associer des variables aux controls du Ribbon bar
    Par subzero01 dans le forum MFC
    Réponses: 3
    Dernier message: 07/02/2010, 18h17
  3. Réponses: 0
    Dernier message: 17/12/2008, 15h26
  4. [IE + IMG + onclick] Pas d'event lancé
    Par drfeelgood13 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 03/03/2008, 16h41
  5. Form qui ne reçoit pas des events
    Par eliek_9 dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 26/07/2006, 15h45

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