OnCancel() AND OnOK()
来源:互联网 发布:新西兰基督城公交软件 编辑:程序博客网 时间:2024/06/16 16:27
OnOK()
//更新数据然后关闭对话框。
void CDialog::OnOK()
{
if (!UpdateData(TRUE))
{
TRACE0( "UpdateData failed during dialog termination./n ");
// the UpdateData routine will set focus to correct item
return;
}
EndDialog(IDOK);
}
OnOK只会将对话框中的控件释放掉,但对话框这个类对象还是存在的。
OnCancel()
VC代码:
void CDialog::OnCancel()
{
EndDialog(IDCANCEL);
}
void CDialog::EndDialog(int nResult)
{
ASSERT(::IsWindow(m_hWnd));
if (m_nFlags & (WF_MODALLOOP|WF_CONTINUEMODAL))
EndModalLoop(nResult);
::EndDialog(m_hWnd, nResult);
}
void CWnd::EndModalLoop(int nResult)
{
ASSERT(::IsWindow(m_hWnd));
// this result will be returned from CWnd::RunModalLoop
m_nModalResult = nResult;
// make sure a message goes through to exit the modal loop
if (m_nFlags & WF_CONTINUEMODAL)
{
m_nFlags &= ~WF_CONTINUEMODAL;
PostMessage(WM_NULL);
}
}
OnCancel()与OnOK();都是CDialog的成员函数。
CDialog::OnOK
说明当用户按OK按钮(ID是IDOK)时调用。覆盖该函数执行OK按钮动作。如果对话框包括自动数据检验和交换,缺省方式是对应用的某些变量进行数据的检验和更新。如果在非模态对话框中实现OK按钮,必须覆盖OnOK成员函数,并在其中调用DestoryWindow 。不能调用基类成员函数,那将会调用EndDialog,使对话框虽然存在但不可视。
CDialog::OnCancel
说明当用户在模态对话框或非模态对话框内单击Cancel按钮或按ESC键时,窗体调用这个成员函数。覆盖该成员函数,执行Cancel按钮动作,缺省方式是调用EndDialog来简单中止模态对话框,并使DoModal 返回IDCANCEL。如果在非模态对话框中实现Cancel按钮,必须覆盖OnCancel成员函数,并在其中调用DestoryWindow 。不能调用基类成员函数,那将会调用EndDialog,使对话框虽然存在但不可视。
OnOk和OnCancle 按钮决定DoModal的返回值
CDialog::OnOk和CDialog::OnCancle 按钮决定了DoModal的返回值
如果是CDialog::OnOk回值是(1)
如果是CDialog::OnCancle则返回值是(2)