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 :

TabCtrl et Message [FAQ]


Sujet :

MFC

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Par défaut TabCtrl et Message
    Bonjour à tous,

    Je développe actuellement un projet sous Visual C++. Je vais essayer de vous décrire mon petit problème !


    J'ai une classe MyTabCtrl qui me permet de créer mes 2 onglets. Dans cette classe, je fais le lien avec 2 Dialog Box filles : Dialog1 et Dialog2.

    Dans ma classe principale MonTestDlg, j'instancie MyTabCtrl. Voici une extrait de "MonTestDlg.h" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MyTabCtrl m_tabCtrl;
    Sur Dialog1, j'ai plusieurs boutons. Je souhaiterai que les messages envoyés par ces boutons sont interceptés par la classe MonTestDlg.

    J'espère avoir été assez clair ! Si ce n'est pas le cas, n'hésitez pas à me le dire !!!!

  2. #2
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut
    tu peux intercepter sans problème les message a destination de ta class dialogue.

    par exemple dans le cas d'un message user:
    enregistre un message perso :
    static const UINT UWM_RTC_NOINIT= ::RegisterWindowMessage("unestringunique");
    et dans la message map de ta classe dialogue,
    tu peux inserer par exemple un ON_REGISTERED_MESSAGE
    et le mapper avec une fonction de ta classe.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Par défaut
    Je ne suis pas sûr d'avoit tout compris... (débutante oblige)

    Je sais intercepter un message de mes Dialog Box en ajoutant les fonctions nécessaires dans leurs fichiers sources. Par contre je voudrai "faire remonter" ces messages jusqu'à ma classe MonTestDlg pour qu'elle puisse traiter l'information. C'est là que pour moi réside la difficluté ...

  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
    une solution pas trop compliquée:
    1)
    tu implémentes avec l'assistant le message clic des boutons en question sur les onglets concernés.
    tu déplaces manuellement les fonctions de réponse et leurs implementations de la macro message_map de l'onglet vers la boite de dialogue principale.
    comme si les boutons étaient sur la boite de dialogue principale.
    2) sur les onglets contenant les boutons tu mets en place avec l'assistant le message OnCommand et tu fais le traitement suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    BOOL CTabInformation::OnCommand(WPARAM wParam, LPARAM lParam)
    {
        // TODO : ajoutez ici votre code spécialisé et/ou l'appel de la classe de base
        UINT nCode=HIWORD(wParam);        
        UINT nID = LOWORD(wParam);       
        if(nCode==BN_CLICKED && nID==IDC_BUTTON2)
        {
                 m_pTab->GetParent()->PostMessage(WM_COMMAND,wParam,lParam);
        }
     
        return CDialog::OnCommand(wParam, lParam);
    }
    dans mon exemple IDC_BUTTON2 est un bouton situé sur l'onglet CTabInformation.
    m_pTab est un pointeur sur le tabctrl qui peut etre obtenu par GetParent():
    le parent d'un onglet c'est le tabctrl ,le parent du tabctrl c'est la dialogue principale...

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/12/2005, 18h29
  2. Message 'Duplicate index entry'
    Par Poulou dans le forum Administration
    Réponses: 13
    Dernier message: 04/05/2004, 14h57
  3. Réponses: 2
    Dernier message: 27/05/2002, 19h46
  4. A lire impérativement avant de poster un message
    Par ok.Idriss dans le forum Demandes
    Réponses: 0
    Dernier message: 01/05/2002, 18h57

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