c++ - 调用 UpdateData(TRUE) 后 CString 值发生变化

标签 c++ cstring visual-c++

我有一个应用程序,其中有一个编辑框。此编辑框允许用户输入最多 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/

相关文章:

javascript - 为什么 EnumPrintersA 和 EnumPrintersW 请求相同数量的内存?

c++ - 如何在 C++ 中单独锁定 unordered_map 元素

c++ - 段错误 : "...no such file or directory"

c++ - 尝试在 Visual C++ 中使用 CString 时出现语法错误

visual-c++ - 这个 C++ 编译错误是什么意思?

c# - 如何在 .NET 应用程序中使用 C++ 项目?

c++ - 为什么在以下情况下没有数据竞争?

c++ - 列出名为 boost 的托管共享内存的名称

c++ - CString 无法从资源加载日语字符串

c++ - 添加对 boost::fusion::vector 的引用