我正在开发一个C ++项目并使用CPropertyPage::OnOk()
方法。
我想要发生的是当用户点击确定或应用时,程序将执行检查,如果检查错误,它会产生压力关闭的窗口。
我怎样才能让窗户停止关闭?
我尝试了一次简单的回归,但没有去。
例如:
void CApptEditGen::OnOK()
{
if ( prealloc(&m_ai->apapallocate) || Dummy_aftalloc(m_ai) == REDO ) {
m_pCtl_ApptEdit_Units->SetFocus();
m_pCtl_ApptEdit_Units->SetWindowText("");
return;
}
CPropertyPage::OnOK();
}
答案 0 :(得分:2)
使用以下内容检查值A>值B然后返回0以停止关闭!
BOOL CApptEditGen::OnKillActive()
{
CString inpValue;
m_pCtl_ApptEdit_Units->GetWindowText(inpValue);
if (atoi(inpValue) > freeUnitsAvailable)
return 0;
return CPropertyPage::OnKillActive();
}
答案 1 :(得分:1)
一个简单的返回应该可以解决问题,正如下面this page on MSDN中的代码片段所示,该代码片段描述了CDialog的OnOK()函数(从中派生出CPropertyPage):
/* MyDialog.cpp */
#include "MyDialog.h"
void CMyDialog::OnOK()
{
// TODO: Add extra validation here
// Ensure that your UI got the necessary input
// from the user before closing the dialog. The
// default OnOK will close this.
if ( m_nMyValue == 0 ) // Is a particular field still empty?
{
AfxMessageBox("Please enter a value for MyValue");
return; // Inform the user that he can't close the dialog without
// entering the necessary values and don't close the
// dialog.
}
CDialog::OnOK(); // This will close the dialog and DoModal will return.
}
您是否确定在CPropertyPage上正确覆盖了OnOK()?如果没有,则将调用默认的CPropertyPage :: OnOK,这将在您描述时关闭窗口。