我的对话框来自CPropertyPage

我已经覆盖了OnOK()来运行一些自定义检查。但是,当调用处理程序时,动态数据交换(DDX)似乎已经完成,并且我的类变量已经更新。

我以为DDX会在我调用CPropertyPage::OnOK()时发生,这是在处理程序末尾执行的。

另外,如果我的代码决定对话框不应该关闭并返回而不调用CPropertyPage::OkOK(),则对话框仍然会关闭!

如何在DDX更新类变量之前运行自定义检查?

附言似乎默认情况下不再安装MFC源代码,并且所有安装选项都没有提及MFC源代码。谷歌搜索后,我发现提到了两个选择。我检查了它们,但仍然没有MFC源代码。

最佳答案

CPropertyPage::OnOK()CDialogEx::OnOK()的功能不同。

属性页应改写CPropertyPage::OnKillActive()。此方法使我可以执行自定义验证并返回FALSE,而无需调用CPropertyPage::OnKillActive()以防止对话框关闭或切换到另一个选项卡。

关于c++ - 数据交换在CPropertyPage::OnOK中完成了吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57530886/

10-11 22:08