我有一个应用程序,其中有一个编辑框。此编辑框允许用户输入最多 20 个字符的任何字符。
现在我已经编写了一个函数来处理事件的编辑更改
ON_EN_CHANGE
void CDlgFloatingEdit::OnEditChanged() { UpdateData(TRUE); }
现在,当我在调试时输入 20 个字符的文本值时,我发现直到在此函数中调用 UpdateData(TRUE),CString 的值才能正确保存,一旦调用 UpdateData(TRUE),该值就会得到设置为 NULL。
当我将所有字符输入为 4 时的另一个观察结果,它可以正常工作。但是,当我将所有字符输入为 1 时,该值将设置为 NULL。
我不知道为什么会发生这种情况。
最佳答案
UpdateData 总是将控件中的数据复制到对话框数据成员中,这就是它的功能。它将立即应用任何 DDV 数据验证,包括字段的 20 个字符限制。如果验证失败,它应该显示错误,但即使没有,它也可能会清除 CString 数据成员。
关于c++ - 调用 UpdateData(TRUE) 后 CString 值发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5428568/