DoDataExchange VC ++ 6.0

时间:2009-07-27 19:05:05

标签: visual-c++

我继承了一个非常古老的应用程序,我正在更新它(我知道,我们应该在VS 2008中重写它,但我们购买了一家公司,这就是我被困在遗物中的方式)。使用UpdateData(TRUE)检索对话框控件中所做的更改,不会更新任何内容。我有一个编辑控件,一个整数变量,一个带有字符串变量的编辑控件,使用类向导分配。按下OK按钮后,将执行UpdateData(TRUE)以从disalog中检索新值。

我似乎记得在VS C ++ 6.0刚出现时遇到类似的问题,但是自从VS 2003和C#变得普遍以来没有使用它。

提前感谢您的帮助!

比尔

2 个答案:

答案 0 :(得分:1)

检查DoDataExchange()方法。它应具有将数据写入控件或从控件读取数据的逻辑。如果程序员使用默认的实现方法,那么每个正在读/写的控件都会有一个DDX _...宏。只需查看任何其他MFC对话框(在您的代码或谷歌中),看看如果DDX命令丢失,应该如何编写它们。

或者,如果它只有1或2个值,您可以轻松获取控件并直接读取它,如果您不介意自己进行验证等。从表单设计器中获取控件的ID,并使用以下内容:

CEditWnd *pWnd = GetDlgItem(ID_THECONTROL);
CString newValue = pWnd->GetWindowText();
...

答案 1 :(得分:0)

您需要查看DoDataExchange方法的内容,看看它在做什么。这里没有足够的信息来说明除此之外可能出现的问题。