我继承了一个非常古老的应用程序,我正在更新它(我知道,我们应该在VS 2008中重写它,但我们购买了一家公司,这就是我被困在遗物中的方式)。使用UpdateData(TRUE)检索对话框控件中所做的更改,不会更新任何内容。我有一个编辑控件,一个整数变量,一个带有字符串变量的编辑控件,使用类向导分配。按下OK按钮后,将执行UpdateData(TRUE)以从disalog中检索新值。
我似乎记得在VS C ++ 6.0刚出现时遇到类似的问题,但是自从VS 2003和C#变得普遍以来没有使用它。
提前感谢您的帮助!
比尔
答案 0 :(得分:1)
检查DoDataExchange()方法。它应具有将数据写入控件或从控件读取数据的逻辑。如果程序员使用默认的实现方法,那么每个正在读/写的控件都会有一个DDX _...宏。只需查看任何其他MFC对话框(在您的代码或谷歌中),看看如果DDX命令丢失,应该如何编写它们。
或者,如果它只有1或2个值,您可以轻松获取控件并直接读取它,如果您不介意自己进行验证等。从表单设计器中获取控件的ID,并使用以下内容:
CEditWnd *pWnd = GetDlgItem(ID_THECONTROL);
CString newValue = pWnd->GetWindowText();
...
答案 1 :(得分:0)
您需要查看DoDataExchange
方法的内容,看看它在做什么。这里没有足够的信息来说明除此之外可能出现的问题。