[英]CPropertyPage dialogue OnOk should not close the dialogue if there is an error
我有一个继承自CPropertyPage
类的类。 我有一个OnOk()
方法和一个OnKillActive()
方法。 每当我在对话上按 Ok 时。 OnKillActive()
被调用,但OnOk()
从未被调用。 问题取决于我不想在按下 Ok 时关闭对话的条件。 但是对话即将结束,按下 Ok。
当我按下 Ok 时,如何防止对话框关闭?
代码:
In MyClass.h:
class MyClass : public CPropertyPage {
}
In MyClass.cpp:
void MyClass::OnOK(){
if (condition true) {
return; // This should prevent the dialogue from closing but still the dialogue closes
}
return CPropertyPage::OnOk();
}
BOOL MyClass::OnKillActive() {
if (condition true) {
CDialog::DoModal();
return FALSE; // This should prevent the dialogue from closing but still the dialogue closes
}
return CPropertyPage::OnKillActive();
}
我不确定你是否可以调用CDialog::DoModal();
因为您的属性页面尚未关闭。
当此事件( OnKillActive()
)发生时,您的属性页处于非活动状态。 但是您的属性页仍然存在,并且属性页中的数据也存在用于验证。
要返回您的页面,只需将焦点设置在对话框项目之一中即可。 使用“ GetDlgItem
”获取对象并使用“ SetFocus
”设置焦点
此处提供了一个示例。
实际上在PropertySheet
类的OnClickedOk()
函数中,有一个EndDialog(IDOK)
。 这就是为什么每次按下 Ok 时它都会关闭的原因。
我只是在EndDialog()
之前进行了条件检查并且它起作用了。 感谢您的回复。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.