我有一个应用程序,其中有一个编辑框。此编辑框允许用户输入最多20个字符的任何字符。
现在我已经编写了一个函数来处理为事件更改的编辑
ON_EN_CHANGE
void CDlgFloatingEdit::OnEditChanged() { UpdateData(TRUE); }
现在当我在调试时输入20个字符的文本值时,我发现在此函数中调用UpdateData(TRUE)之前,CString的值会被正确保存,一旦调用UpdateData(TRUE),值就会得到设置为NULL。
当我将所有字符输入为4然后它正常工作时的另一个观察结果。但是当我将所有字符输入为1时,该值将设置为NULL。
我不知道为什么会发生这种情况。
答案 0 :(得分:2)
UpdateData将始终将控件中的数据复制到对话框数据成员中,即其功能。它将立即应用任何DDV数据验证,包括字段上的20个字符限制。如果验证失败,它应该显示错误,但即使它没有,也可能清除CString数据成员。