Lire le texte de modifier le contrôle dans les MFC et VS2010

Je suis en train d'écrire une simple application MFC avec une fenêtre de Dialogue et de quelques boutons.
J'ai aussi ajouté un contrôle d'édition afin de permettre à l'utilisateur d'insérer une chaîne de texte.

J'aimerais lire la valeur qui est présent dans le contrôle d'édition et de le stocker dans une chaîne de caractères, mais je ne sais pas comment faire.

Je n'ai aucune erreur de compilation, mais j'ai toujours lu qu'un "." de la marque.

J'ai ajouté un nom de variable pour le contrôle d'édition de texte qui est filepath1 et c'est le code:

    //CMFC_1Dlg dialog
    class CMFC_1Dlg : public CDialogEx
    {
    //Construction
    public:
        CMFC_1Dlg(CWnd* pParent = NULL);    //standard constructor

    //Dialog Data
        enum { IDD = IDD_MFC_1_DIALOG };

        protected:
        virtual void DoDataExchange(CDataExchange* pDX);    //DDX/DDV support


    //Implementation
    protected:
        HICON m_hIcon;

        //Generated message map functions
        virtual BOOL OnInitDialog();
        afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
        afx_msg void OnPaint();
        afx_msg HCURSOR OnQueryDragIcon();
        DECLARE_MESSAGE_MAP()
    public:
        afx_msg void OnBnClickedButton1();
        afx_msg void OnBnClickedButton2();
        afx_msg void OnEnChangeEdit1();
        CString filePath1;
    }

    //...
void CMFC_1Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
    if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    {
        CAboutDlg dlgAbout;
        dlgAbout.DoModal();
    }
    else
    {
        CDialogEx::OnSysCommand(nID, lParam);
    }
}

    CMFC_1Dlg::CMFC_1Dlg(CWnd* pParent /*=NULL*/)
        : CDialogEx(CMFC_1Dlg::IDD, pParent)
        ,filePath1(("..\\Experiments\\Dirs\\"))
    {
        m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    }

    void CMFC_1Dlg::DoDataExchange(CDataExchange* pDX)
    {
        CDialogEx::DoDataExchange(pDX);
        DDX_Text(pDX, IDC_EDIT1, filePath1);

    }

    //then i try to get the string value with
    CString txtname=filePath1;
    _cprintf("Value %s\n", txtname); //but i always read just a "."
  • Vous devez d'abord ajouter une variable de contrôle qui contrôle la zone d'édition. De cette façon, vous pouvez utiliser la variable pour lire le texte.
  • oui, j'ai déjà ajouté ça que j'ai précisé dans le sujet. Le problème est que de cette façon, je suis seulement capable de lire le premier caractère et pas la totalité de la chaîne. Par exemple, si j'écris "Bonjour" dans la zone de texte, txtname ne contient que des "H"
  • Essayez txrname.GetString()
  • Je ne vois pas une CEdit variable.
  • Pour être honnête, je ne comprenais pas très bien le CEdit variable. Quand j'ai ajouter une variable à un contrôle de texte, VS m'ajouter le CEdit variable, mais ce n'est pas une variable Chaîne de caractères, alors comment je dois l'utiliser?