我绑定了一个int型值变量m_ntest,控制变量m_editctrl到这个Edit控件
然后再一个定时器里,每隔1s钟,更新m_ntest的值。我用单独的m_editctrl.UpdateData(FALSE),edit控件的内容无法更新如果用UpdateData(FALSE)的话,就可以了这是为啥?

解决方案 »

  1.   

    UpdateData(FALSE)只是调用dlg的函数.它初始化了dlg的所有内容, 具体说呢就是把变量值赋给控件.
      

  2.   

    UpdateData是父窗口与子窗口控件的DDX交互函数,怎能用于单独的控件。。
    非要更新单个控件,调父窗口SetDlgItem系列函数或者直接控件类SetWindowText
      

  3.   

    首先,定义一个CDataExchange 对象
    CDataExchange ce(this,false);
    然后,调用
    DDX_Text(&ce,IDC_EDIT1,m_sAAA);
    其中,IDC_EDIT1是你的编辑框的ID,m_sAAA是该编辑框所联的CString变量
    这实际上是MFC中更新变量的方法,只不过它是一下子更新对话框内所有关联的变量,
    你可以看看自动生成的DoDataExchange:
    void CMyDialog::DoDataExchange(CDataExchange* pDX)
    {
        CDialog::DoDataExchange(pDX);    // Call base class version
        //{{AFX_DATA_MAP(CMyDialog)
        DDX_Check((.........););
        DDX_Text(.........);
        DDV_MaxChars(pDX, m_strName, 20);
        //}}AFX_DATA_MAP
    }UpdateData(FALSE)就 调用这个函数