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] SendMessage entre 2 contr�les


Sujet :

MFC

  1. #1
    Membre confirm�
    Inscrit en
    Juillet 2002
    Messages
    57
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Par d�faut [MFC] SendMessage entre 2 contr�les
    Bonjour je travaille sous VisualStudio.NET.

    Mon application se compose d'une boite de dialogue comprenant une ListBox et un Edit (Une fen�tre parent et 2 fen�tres filles de ce fait).

    Je fais apparaitre un menu sur le clic droit de ma listbox,

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void CMyListBox::OnRButtonUp(UINT nFlags, CPoint point)
    {
        CMenu menu,*pPopup;
        GetCursorPos(&point);
     
        menu.LoadMenu(IDR_MENU1);
        ASSERT (menu.m_hMenu != NULL);
        pPopup = menu.GetSubMenu(0);
        ASSERT (pPopup != NULL);
        int nResult = pPopup->TrackPopupMenu(TPM_LEFTALIGN |  TPM_RIGHTBUTTON, point.x, point.y, this);  
        menu.DestroyMenu();	
    }
    Le menu poss�de 2 options : Ins�rer et Supprimer.

    Pour la derni�re cit�e pas de probl�me :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void CMyListBox::OnSupprimer()
    {
     
        int Index = GetCurSel();
     
        if((Index != LB_ERR)) DeleteString( Index );
    }
    Pour Ins�rer j'aimerai que le texte contenu dans l'edit s'ajoute � la ListBox. Je dois pour �a faire dialoguer les 2 fen�tres via SendMessage je suppose. Je n'ai pas trouv� d'exemple concluant et l'aide me parait flou.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    void CMyListBox::OnMenuinserer()
    {
    	// SendMessage ?
     
     
    }
    Note :

    J'ai ajout� 2 variables de contr�les dans la classe repr�sentant la boite de dialogue,

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    // boîte de dialogue CMonAppMFCDlg
    class CMonAppMFCDlg : public CDialog
    {
         //
     
          public:
     
    	CMyListBox m_CtlList;
    	CEdit m_CtlEdit;
     
     
        //
    }
    Voil�, merci bien !

  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,
    pas besoin de messages.
    tu recuperes le texte de l'edit par un GetWindowText ou UpdateData(TRUE) si une variable est attach�e a l'edit
    ensuite tu fais un AddString sur la listbox.

  3. #3
    Membre confirm�
    Inscrit en
    Juillet 2002
    Messages
    57
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Par d�faut
    D'accord mais le probl�me c'est que dans cette m�thode,
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void CMyListBox::OnMenuinserer()
    {
        CString str;
     
        //
     
        AddString(str);
    }
    Je n'ai pas acc�s � ma variable repr�sentant l'edit (m_CtlEdit) qui est contenu dans la classe de ma boite de dialogue. Je ne peux pas faire m_ctlEdit.GetWindowText(str). Ou dois-je placer le UpdateData(TRUE) pour mettre � jour les donn�es ?

  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
    salut,
    et bien da ta classe listbox tu mets un pointeur sur edit .
    que tu initialiase dans OnInitDialog dans ta dialogue.
    et la plus de probleme.
    sinon faire un GetParent() caster sur la classe de la dialogue et la de nouveau tu as acces aux controles ...
    a toi de voir .

  5. #5
    Membre confirm�
    Inscrit en
    Juillet 2002
    Messages
    57
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Par d�faut
    Ok je vois le principe,

    j'ai d�clar� mon pointeur comme cela

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    class CMyListBox : public CListBox
    {
    public :
    	CEdit * Edit;
    Mais dans le InitDialog je ne vois pas comment se passe l'initialisation, il aime pas trop mon :

    CMyListBox::Edit = m_CtlEdit;

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

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 295
    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 295
    Billets dans le blog
    2
    Par d�faut
    salut Charles (ou Marilyn?),

    ton m_CtlEdit est un pointeur? S'il n'en est pas un, il faut faire:
    CMyListBox::Edit = &m_CtlEdit;

    P.S: peut-�tre as-tu modifi� les noms pour le post, mais je te d�conseille fortement d'utiliser un nom de variable tel 'Edit'. Utilise plutot m_eEdit, quelque chose comme �a. En effet, Visual est une usine � gaz assez monstrueuse, et des tas de classes et autres variables sont utilis�es en 'sous-marins' dans nos programmes.

  7. #7
    Membre confirm�
    Inscrit en
    Juillet 2002
    Messages
    57
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Par d�faut
    Merci de plus j'avais r�alis� une autre erreur de newbie :

    Donc dans le InitDialog() :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    m_CtlList.m_Edit = &m_CtlEdit;
    et la m�thode d'insertion donne :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void CMyListBox::OnMenuinserer()
    {
    	CString str;
    	m_Edit->GetWindowText(str);
    	AddString(str);
     
    }

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

Discussions similaires

  1. [MFC] WS_TABSTOP entre CDialog imbriqu�e
    Par CroustRyu dans le forum MFC
    R�ponses: 25
    Dernier message: 30/05/2007, 10h34
  2. [MFC] diff�rence entre CView et CDialog?
    Par r0d dans le forum MFC
    R�ponses: 3
    Dernier message: 22/02/2005, 16h23
  3. [MFC] communication entre onglets d'une fen�tre
    Par bigboomshakala dans le forum MFC
    R�ponses: 12
    Dernier message: 29/05/2004, 12h12
  4. R�ponses: 4
    Dernier message: 23/05/2004, 17h14
  5. R�ponses: 6
    Dernier message: 28/02/2004, 09h19

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