将文本框绑定到DDX中的Control Vs Value

时间:2016-01-13 18:13:45

标签: visual-c++ data-binding mfc

当我尝试使用

之类的代码将控件内容绑定到CString
CString m_Name;
...
DDX_Text(pDX, IDC_Name, m_Name);
...
print(m_Name);

它似乎不起作用 - 打印m_Name什么都不打印。但是,如果我使用一个控件,这似乎有点矫枉过正,它可以正常工作:

CEdit m_Name;
...
DDX_Control(pDX, IDC_Name, m_Name);
...
CString val;
m_Name.GetWindowText(val);
print(val);

使用DDX_Control可以解决我的问题,但我不能帮助我感到误解DDX_Text,有人可以提供帮助吗?

1 个答案:

答案 0 :(得分:3)

创建控制变量时,它由DoDataExchange()初始化,由CDialogEx::OnInitDialog();

调用

从那时起,您可以使用CEdit m_Name;来获取或设置数据。

使用“data”变量,没有自动同步:您需要调用UpdateData(FALSE);将数据从成员变量移动到控件或UpdateData(TRUE); - 从控件移动到成员变量。这是BTW,由OnOk()的默认实现完成。