当前位置: 首页 > 编程技术 > 正文

MFC类是否调用父类函数的区别

  在MFC中,我们经常回遇到很多的时候要调用父类函数的函数,那么,什么时候我们需要调用勒?

以对话框为例,在Mfc中,对话框的基类大多数是CDialogEx这个类,

这里假设我们从创建了以对话框,并且关联的类位CDlg_Test,并且父类为CDialogEx

在CPP文件中,代码类似于:

class CDlg_Test : public CDialogEx {
  //....
};

如果我们给对话框的确定按钮添加上BN_CLICKED消息处理函数的话,我们会发现在MFC自动生成的代码中会有这样的代码:

void CDlg_Test::OnBnClickedOK()
{   
CDialogEx::OnOk(); //调用了父类的函数
}

当我们把CDialogEx::OnOk()注释掉后,重新编译并点击确定,我们回惊奇的发现对话框没有消失,当我们恢复了后,对话框就会消失 因此,在消息处理函数里面如果有判断,但是想在判断成立后对话框仍然可以输入,那么就直接return,否则的话,增加上CDialogEx::OnOk()就可以了,

例如:

void CDlg_Test::OnBnClickedOK()

{

if(m_user.isEmpty()){
    MessageBox(“用户名不能为空”,"错误",MB_OK );
    return ; //当m_user变量为空时直接返回,这样对话框不会消失,仍然可以输入

}

if(m_password.isEmpty()){
    MessageBox(“密码不能为空”,"错误",MB_OK );
    CDialogEx::OnOk(); //当m_password变量为空时,调用父类函数,对话框将消失,要打开对话款需要重新点击按钮
}
//一些代码
CDialogEx::OnOk(); //调用了父类的函数,注销对话框

}

上面就是一个关于是否调用父类函数的区别简单例子



本文固定链接: http://kuaile.in/archives/1305 | 蒲公英的博客

该日志由 蒲公英 于2013年03月10日发表在 编程技术 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: MFC类是否调用父类函数的区别 | 蒲公英的博客
关键字:

MFC类是否调用父类函数的区别:等您坐沙发呢!

发表评论


You must enable javascript to see captcha here!

快捷键:Ctrl+Enter