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 :

Détecter les changement de Tab


Sujet :

MFC

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 303
    Par défaut Détecter les changement de Tab
    Bonjour,

    J'intègre les nouvelles MFC dans mon appli.
    J'utilise CMFCTabCtrl pour gérer les différents onglets d'une dialogue. Pouvez-vous me dire quel événement faut il intercepter pour détecter le changement d'onglet (de tab).

    Merci

  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
    Par défaut
    salut,
    le changement de tab declenche deux méthodes:
    FireChangeActiveTab et FireChangingActiveTab
    ces deux méthodes envoies à la fenêtre parent les messages :
    AFX_WM_CHANGE_ACTIVE_TAB et AFX_WM_CHANGING_ACTIVE_TAB
    que tu implementes de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ON_REGISTERED_MESSAGE(AFX_WM_CHANGE_ACTIVE_TAB, OnChangeActiveTab)
        ON_REGISTERED_MESSAGE(AFX_WM_CHANGING_ACTIVE_TAB, OnChangingActiveTab)
    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
     
    LRESULT CMyFormView::OnChangeActiveTab(WPARAM wp, LPARAM /*lp*/)
    {
        CString str;
        str.Format (_T("AFX_WM_CHANGE_ACTIVE_TAB: %d"), (int) wp);
        return 0;
    }
     
    LRESULT CMyFormView::OnChangingActiveTab(WPARAM wp, LPARAM /*lp*/)
    {
        CString str;
        str.Format (_T("AFX_WM_CHANGING_ACTIVE_TAB: %d"), (int) wp);
     
        return 0;
    }

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 303
    Par défaut
    Merci,



    Si ce n'est pas indiscret d'où tiens tu cette info?
    J'ai regardé sur MSDN, j'avais pointé la fonction CMFCBaseTabCtrl::FireChangeActiveTab() mais elle n'est pas documentée!


    André

  4. #4
    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
    Par défaut
    je vais chercher directement dans les sources ...
    ma méthode:
    pour activer un tab on peut utiliser ActiveTab , de la je cherche le code de cette méthode pour voir ce qu'elle fait.
    je trouve les méthodes précitées, que je cherche jusqu'à trouver les messages concernés.
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    void CMFCBaseTabCtrl::FireChangeActiveTab(int nNewTab)
    {
        CFrameWnd* pParentFrame = AFXGetTopLevelFrame(this);
        CWnd* pParent = GetParent();
        ASSERT_VALID(pParent);
     
        pParent->SendMessage(AFX_WM_CHANGE_ACTIVE_TAB, nNewTab, (LPARAM)this);
        if (pParent != pParentFrame && pParentFrame != NULL)
        {
            ASSERT_VALID(pParentFrame);
            pParentFrame->SendMessage(AFX_WM_CHANGE_ACTIVE_TAB, nNewTab, (LPARAM)this);
        }
     
        m_bSetActiveTabFired = TRUE;
    }
     
    BOOL CMFCBaseTabCtrl::FireChangingActiveTab(int nNewTab)
    {
        CFrameWnd* pParentFrame = AFXGetTopLevelFrame(this);
        CWnd* pParent = GetParent();
        ASSERT_VALID(pParent);
     
        BOOL bRes = (BOOL) pParent->SendMessage(AFX_WM_CHANGING_ACTIVE_TAB, nNewTab, (LPARAM)this);
        if (bRes)
        {
            return TRUE;
        }
     
        if (pParent != pParentFrame && pParentFrame != NULL)
        {
            ASSERT_VALID(pParentFrame);
            bRes = (BOOL) pParentFrame->SendMessage(AFX_WM_CHANGING_ACTIVE_TAB, nNewTab, (LPARAM)this);
        }
     
        return bRes;
    }
    il me reste plus qu'a chercher l'utilisation de ces messages , et d'écrire ma réponse pour ce post.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 303
    Par défaut
    Merci, de partager les secrets du Chef

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

Discussions similaires

  1. détecter les changements automatiquement
    Par Issam dans le forum Firebird
    Réponses: 6
    Dernier message: 05/05/2015, 14h45
  2. Détecter les changements dans un fichier qui alimente une table
    Par yacinechaouche dans le forum Requêtes
    Réponses: 2
    Dernier message: 23/06/2008, 17h56
  3. les changements du protocol ipv4 ----> ipv6
    Par m-unix dans le forum Développement
    Réponses: 1
    Dernier message: 26/10/2004, 19h58
  4. [Langue Clavier] Comment détecter le changement de la langue ?
    Par Fares BELHAOUAS dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 30/09/2004, 19h26
  5. Comment détecter un changement du réglage de voume sonore ?
    Par mjlub dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 09/01/2004, 17h43

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