none
Question Edit Control MFC RRS feed

  • Question

  • Bonjour,

    J'ai un petit problème avec un edit control je m'explique :

    Je suis entrain de créer une appli avec un button :
    lorsque je clique sur le bouton ça m'ouvre une boite de dialogue avec un edit control à l'intérieur, je souhaite récupérer la valeur de l'edit control quand l'utilisateur clique sur OK pour fermer la boite de dialogue

    voici mon code :

    void CProjetDlg::OnButton1Clic(){	
       CdDlg dDlg;	
       CString str;	
       UpdateData(TRUE);	
       if(dDlg.DoModal()==IDOK){		
          GetDlgItemText(IDC_EDIT,str);		
          MessageBox(str);	
       }  
    }



    Dans mon cas le messageBox s'ouvre mais il est vide, donc cela signifie que str est vide...
    Je n'arrive pas a récupérer le contenu du edit control juste apres la fermeture du dialog
    samedi 15 décembre 2012 15:17

Réponses

  • Bonjour,

    Il ne faut pas appeler GetDlgItemText  apres le DoModal.

    Sauvegarde la valeur de L'edit dans une variable sur l'evenement OnOK.

    puis recupere apre le DoModal avec adresseDlg.m_str ;

    Cordialement,

    Joël

    • Marqué comme réponse Aurel Bera jeudi 20 décembre 2012 15:14
    mercredi 19 décembre 2012 14:16

Toutes les réponses

  • La ligne de code :

          GetDlgItemText(IDC_EDIT,str);

    récupère le contenu du contrôle IDC_EDIT1 dans la boite de dialogue principale, CProjetDlg, pas dans CdDlg.

    Pour récupérer le contenu du contrôle IDC_EDIT1 dans la boite de dialogue CdDlg, il faudrait mettre cette ligne de code dans la classe CdDlg. Dans le OnOk par exemple. Il faut aussi créer une variable membre de la classe CdDlg et y stocker le contenu du controle.

    samedi 15 décembre 2012 17:02
    Auteur de réponse
  • En faite voici la situation actuelle :

    J'ai supprimé finalement le bouton, j'ai placé un menu dans ma boite de dialogue principal

    Lorsque l'utilisateur clique sur un élément du menu par exemple : Ecrire

    Il se retrouve avec une deuxième boite de dialogue avec à l'intérieur un edit control puis un bouton OK et un bouton Annuler

    Ce que je souhaite faire : récupérer le contenu du edit control quand l'utilisateur clique sur OK (ce qui ferme la boite de dialogue secondaire)

    Situation :

    J'ai créer une classe qui se trouve dans ProjetDlg.cpp (la classe du boite de dialogue principale ProjetDlg)

    class CAdresseDlg : public CDialogEx{ public: CAdresseDlg(); enum { IDD = IDD_ADRESSE }; protected: virtual void DoDataExchange(CDataExchange* pDX); DECLARE_MESSAGE_MAP() }; CAdresseDlg::CAdresseDlg() : CDialogEx(CAdresseDlg::IDD){} void CAdresseDlg::DoDataExchange(CDataExchange* pDX){

    fCDialogEx::DoDataExchange(pDX);

    } BEGIN_MESSAGE_MAP(CAdresseDlg, CDialogEx) END_MESSAGE_MAP()

    Et ensuite j'ai cette méthode qui s'execute quand l'utilisateur clique sur l'élement du menu :

    void CProjetDlg::OnMenuEcrire()
    {
        CAdresseDlg adresseDlg;
        CString str;	
        UpdateData(TRUE);	
        if(adresseDlg.DoModal()==IDOK){		
          GetDlgItemText(IDC_EDITADRESSE,str);		
          MessageBox(str);	
        }  
    }

    Tu pourrais me ré expliquer avec mon code ce que je dois faire ? :)


    samedi 15 décembre 2012 19:37
  • Je peux dire différemment la même chose.

    Il y a deux boites de dialogues : la principale (CProjetDlg), et celle qui s'ouvre quand on clique sur le menu Ecrire (CAdresseDlg).

    La ligne suivante, dans la classe CProjetDlg :

       GetDlgItemText(IDC_EDITADRESSE,str);

    cherche le controle IDC_EDITADRESSE dans la boite de dialogue CProjetDlg.

    Or ce controle n'est pas dans CProjetDlg, mais dans CAdresseDlg.

    Par conséquent, il faut placer ce code dans la classe CAdresseDlg. Par exemple dans la méthode CAdresseDlg::OnOK.



    lundi 17 décembre 2012 00:53
    Auteur de réponse
  • Bonjour,

    Est-ce que vous avez testé les solutions proposées ? Merci de partager avec nous les résultats, afin que d'autres personnes avec le même problème puissent profiter de cette solution.

    Cordialement,

    Aurel


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mardi 18 décembre 2012 10:07
  • Bonjour,

    Il ne faut pas appeler GetDlgItemText  apres le DoModal.

    Sauvegarde la valeur de L'edit dans une variable sur l'evenement OnOK.

    puis recupere apre le DoModal avec adresseDlg.m_str ;

    Cordialement,

    Joël

    • Marqué comme réponse Aurel Bera jeudi 20 décembre 2012 15:14
    mercredi 19 décembre 2012 14:16
  • Bonjour,

    Pouvons-nous considérer que vous avez résolu votre problème avec les scénarios proposés ? Dans l'affirmative, pourriez-vous partager avec nous la solution, afin que d'autres personnes avec le même problème puissent profiter de cette solution ?

    Désormais, nous marquons les solutions proposées. N'hésitez pas à revenir et supprimer la réponse marquée si la solution n’est pas correcte. Merci !

    Cordialement,

    Aurel


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    jeudi 20 décembre 2012 15:16