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)