我的对话框来自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/