这是两个不同的概念喽.
所谓的映射函数就是消息处理函数了,其实它只是普通的函数啦,跟虚函数不是一个概念.
虚函数是C++的概念,而映射函数是MFC对消息处理封装的一套机制...其实对于消息处理也可以用虚函数机制来实现,但是效率会降低,在MFC 技术内幕上有这方面的阐述.所以MFC最终采用的是消息映射.因为虚函数重载后派生类的实现一般是一种不同于基类实现的另外一个行为描述,而在消息处理中我们经常把子类所做的事跟基类所做的事独立的放在一起分别调用,这样的显式调用更加明确.
比如:class CMyDlg : public CDialog
{
....
};// 分工明确的消息处理
BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog(); // 显式调用基类的
...
// CMyDlg本身的操作代码
...
}
所谓的映射函数就是消息处理函数了,其实它只是普通的函数啦,跟虚函数不是一个概念.
虚函数是C++的概念,而映射函数是MFC对消息处理封装的一套机制...其实对于消息处理也可以用虚函数机制来实现,但是效率会降低,在MFC 技术内幕上有这方面的阐述.所以MFC最终采用的是消息映射.因为虚函数重载后派生类的实现一般是一种不同于基类实现的另外一个行为描述,而在消息处理中我们经常把子类所做的事跟基类所做的事独立的放在一起分别调用,这样的显式调用更加明确.
比如:class CMyDlg : public CDialog
{
....
};// 分工明确的消息处理
BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog(); // 显式调用基类的
...
// CMyDlg本身的操作代码
...
}
解决方案 »
- cwebbrowser.Navigate问题
- 新手求教:如何使用lIST CONTROL
- ip 包的解析
- 请教一个文件读写问题,请高手指教。
- Class Wizard里面没有CDialogBar~怎样添加一个CDialogBar派生类?谢谢指点啊!
- 送分:CComboBox下拉菜单怎么出来大点的框?上下箭头紧挨着,每次移动上下箭头只显示出一个字符。
- 如何判断CDocument,属于哪一个CDocTemplate模板?
- 如何获取计算机IP
- 十万火急:为什么Activex控件程序中使用WaitForSingleObject无效?
- OpenGL拾取的问题!(附源码)
- 低延迟播放1080p的视频,发现ffplay非常不流畅
- 对属性页的消息传递没有响应?
但我还是不是很清楚它们之间的差别,能说得更详细写吗?
虚函数是c++类的范畴,映射函数是MFC范畴,但他们之间的相同点,或者说是相互关系又怎样?
希望与大家讨论!
// CMyDlg本身的操作代码
...)
消息影射就是完成消息和函数的对应关系的,
无论这个函数是不是虚函数。