调用UpdateData后,CString值发生变化(TRUE)

时间:2011-03-25 04:33:01

标签: c++ cstring visual-c++

我有一个应用程序,其中有一个编辑框。此编辑框允许用户输入最多20个字符的任何字符。

现在我已经编写了一个函数来处理为事件更改的编辑

  

ON_EN_CHANGE

void CDlgFloatingEdit::OnEditChanged() {    UpdateData(TRUE); }

现在当我在调试时输入20个字符的文本值时,我发现在此函数中调用UpdateData(TRUE)之前,CString的值会被正确保存,一旦调用UpdateData(TRUE),值就会得到设置为NULL。

当我将所有字符输入为4然后它正常工作时的另一个观察结果。但是当我将所有字符输入为1时,该值将设置为NULL。

我不知道为什么会发生这种情况。

1 个答案:

答案 0 :(得分:2)

UpdateData将始终将控件中的数据复制到对话框数据成员中,即其功能。它将立即应用任何DDV数据验证,包括字段上的20个字符限制。如果验证失败,它应该显示错误,但即使它没有,也可能清除CString数据成员。