(1)我在资源中添加了一个Dialog,默认情况下 dialog中有两个button:IDOK、IDCANCEL
(2)我使用向导给这两个按扭添加事件,vc自动生成的代码如下void CLoginDialog::OnOK() 
{
// TODO: Add extra validation here

CDialog::OnOK();
}
void CLoginDialog::OnCancel() 
{
// TODO: Add extra cleanup here

CDialog::OnCancel();
}
(3)从上面的代码中可以看出 都自动生成了CDialog::OnOK(); CDialog::OnCancel(); 这两句
(4)我试着在Dialog中自己添加一个按钮,再使用向导添加事件,生成的代码如下
void CLoginDialog::OnButton1() 
{
// TODO: Add your control notification handler code here

}
(5)分显比上面少了一句
(6)CDialog::OnOK(); CDialog::OnCancel(); 这两句是做什么用的,为什么我自己添加的按扭不会自动生成这样的语句?

解决方案 »

  1.   

    OnOk是对话框响应IDOK消息的函数,也就是点击确定按钮的消息响应,OnCancel是响应IDCANCEL的消息响应,就是点击取消按钮的响应函数
    你自己加的按钮的ID标识不是,IDOK跟IDCANCE,当然不会有CDialog::OnOK();跟CDialog::OnCancel();
      

  2.   

    CDialog::OnOK(); CDialog::OnCancel(); 这两句是做什么用的 
    它是调用了基类的两个函数,这样它就会转到基类中去执行OnOK(); OnCancel(); 这两个函数
      

  3.   

    IDOK和IDCANCEL表示确定和取消,所以它的响应函数会自动加上CDialog::OnOK()和CDialog::OnCancel()。点击这两个Button时会退出对话框就是这两句话实现的。你自己添加的Button的ID如果不是IDOK和IDCANCEL,当然就不会有上面两句!
      

  4.   

    CDialog::OnOK(); CDialog::OnCancel();这两个函数会使对话框退出,但是返回值不一样,前一个好像返回IDOK,后一个返回什么忘记了。你可以在对话框退出后,根据返回值来设定对话框中的操作是否有效。