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]gestion du reflected control de classes encapsul�es


Sujet :

MFC

  1. #1
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    28
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 28
    Par d�faut [MFC]gestion du reflected control de classes encapsul�es
    Bonjour,

    Je suis d�butant MFC et apr�s avoir parcouru la FAQ (j'ai peut-�tre rat� qqchose) je n'ai pas trouv� de r�ponse � mon probl�me.
    J'ai une bo�te de dialogue. Dans le classWizard, je cr�e une nouvelle classe CMonBouton bas�e sur CButton. Toujours dans le classWizard, j'ajoute une fonction OnMonBoutonClic de type "=BN_CLICKED" (reflected control). Dans le programme de ma bo�te de dialogue, j'instancie un ou plusieurs boutons bas�s sur CMonBouton et je les affiche.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    CMonBouton *ptrMonBouton=new CMonBouton();
    ptrMonBouton->Create(_T("Bouton"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, CRect(ptrPosBouton[m_indexBouton]->left,ptrPosBouton[m_indexBouton]->top,ptrPosBouton[m_indexBouton]->right,ptrPosBouton[m_indexBouton]->bottom), this, m_indexBouton);
    m_indexBouton++;
    tout marche correctement, lorsque je clique sur l'un des boutons, j'active bien le CMonBouton::OnMonBoutonClic pour l'objet correspondant. A ce stade comment faire pour activer une m�thode personnalis�e (pas prise en charge dans CDialog) de la bo�te de dialog parent, comment lui redonner la main en fait?
    J'ai lu les TN062 et TN061 de la msdn sur les "message reflection" mais c'est un peu confus dans ma t�te... j'aimerais renvoyer une notification � ma bo�te de dialogue Parent avec un param�tre (notamment l'index du bouton), j'ai essay� de manipuler SendNotifyMessage du c�t� de mon bouton et de g�rer le OnNotify du c�t� bo�te de dialogue sans succ�s.
    J'ai l'impression d'essayer de faire qqchose d'extr�mement simple pourtant

    A d�faut d'y r�pondre, merci d'avoir lu la question

  2. #2
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 297
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 297
    Billets dans le blog
    2
    Par d�faut
    pourquoi ne cr�es-tu pas une methode dans ta boite de dialog qui sera appel�e dans ta methode onButtonClic()?

  3. #3
    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 si ce que tu nommes par la dialog parent est bien au sens windows son parent,
    il suffit de faire dans cette fonction :
    GetParent() � caster avec le nom de la classe parent et appeler la fonction concern�e ..

  4. #4
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    28
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 28
    Par d�faut
    D'abord, merci pour ces r�ponses !

    pourquoi ne cr�es-tu pas une methode dans ta boite de dialog qui sera appel�e dans ta methode onButtonClic()?
    mon bouton n'existe pas encore, il n'y a pas d'IDs d'objets associ�s � mon bouton dans les identit�s d'objets de ma bo�te de dialogue.
    Ma m�thode onMonBoutonClic est d�finie en dehors de ma classe li�e � la bo�te de dialogue, donc je ne peux appeler directement la m�thode perso de ma bo�te de dialogue.

    salut si ce que tu nommes par la dialog parent est bien au sens windows son parent,
    il suffit de faire dans cette fonction :
    GetParent() � caster avec le nom de la classe parent et appeler la fonction concern�e ..
    GetParent()-> me donne acc�s aux m�thodes standards d'une CWnd. Caster avec le nom de la classe ?

    J'ai quand m�me r�ussi � faire ce que je voulais en ajoutant dans le constructeur du bouton, un pointeur pointant sur la bo�te de dialogue "personnalis�e" (avec des membres/m�thodes en plus) parente (au sens windows).

    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
    #include "DlgPerso.h"
     
    // MonBouton.h : header file
    //
     
    /////////////////////////////////////////////////////////////////////////////
    // CMonBouton window
     
    class CMonBouton : public CButton
    {
    // Construction
    public:
    	CMonBouton(class CDlgPerso *);
     
    // Attributes
    public:
    	class CDlgPerso *ptrDlgParent;
    le .cpp

    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
    /////////////////////////////////////////////////////////////////////////////
    // CMonBouton
     
    CMonBouton::CMonBouton(CDlgPerso *ptr)
    {
    	ptrDlgParent=ptr;
    }
     
    CMonBouton::~CMonBouton()
    {
    }
     
     
    BEGIN_MESSAGE_MAP(CMonBouton, CButton)
    	//{{AFX_MSG_MAP(CMonBouton)
    	ON_CONTROL_REFLECT(BN_CLICKED, OnMonBoutonClic)
    	//}}AFX_MSG_MAP
    END_MESSAGE_MAP()
     
    /////////////////////////////////////////////////////////////////////////////
    // CMonBouton message handlers
     
    void CMonBouton::OnMonBoutonClic() 
    {
    	// TODO: Add your control notification handler code here
    	ptrDlgParent->methodePerso();
     
    }
    Mais il me semble quand m�me qu'il doit y avoir un moyen de notifier la CWnd parent, ensuite de r�cup�rer cette notification et en fonction des param�tres de rediriger vers une m�thode perso de la bo�te de dialogue en l'occurence.

  5. #5
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    28
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 28
    Par d�faut
    Je mets le tag r�solu parce que le probl�me est r�gl� mais j'aimerais relancer la question sur les notifications

  6. #6
    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,
    il te faudra expliciter ton probleme plus clairement ,car je ne vois pas trop le probleme avec les messages reflect et le sujet actuel.


+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 31
    Dernier message: 30/03/2006, 16h57
  2. [MFC] Gestion d'un bus GPIB
    Par angeromudelparis dans le forum MFC
    R�ponses: 8
    Dernier message: 04/10/2005, 12h25
  3. R�ponses: 7
    Dernier message: 05/08/2004, 14h55
  4. (MFC) Redimensionner une List Control auto / Boite Dlg
    Par Guybrush113 dans le forum MFC
    R�ponses: 7
    Dernier message: 23/04/2004, 09h24
  5. [MFC]gestion du controle MaskedEdit
    Par dj_kyl dans le forum MFC
    R�ponses: 2
    Dernier message: 27/11/2003, 19h58

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