数据交换在 CPropertyPage::OnOK 内完成?

Data exchange finished in CPropertyPage::OnOK?

我的对话框来自 CPropertyPage

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

我认为当我调用 CPropertyPage::OnOK() 时会发生 DDX,这是我在处理程序末尾所做的。

此外,如果我的代码决定对话框不应该关闭并且 returns 没有调用 CPropertyPage::OkOK(),对话框仍然关闭!

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

P.S。似乎不再默认安装MFC源代码,安装选项none提到MFC源代码。谷歌搜索后,我发现提到了几个选项。我查了他们,我仍然没有MFC源代码。

CPropertyPage::OnOK()CDialogEx::OnOK() 不一样。

属性 页面应该覆盖 CPropertyPage::OnKillActive()。此方法允许我执行自定义验证和 return FALSE 而无需调用 CPropertyPage::OnKillActive() 以防止对话框关闭或切换到另一个选项卡。