锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / C++开源心得 / MFC消息机制与传统Windows消息处理机制的区别
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

锐英源精品原创,禁止转载和任何形式的非法内容使用,违者必究


MFC消息处理机制与传统Windows消息处理机制的区别

 

通知

人是社交动物,软件也是群体协调机制,怎么进行协调,从底层硬件的总线和中断机制,一直到QQ和微信消息,都是一种通知,操作系统管理通知,在特别的场合下叫消息,消息有产生、投递和处理,处理过后,消息就没有了。


Windows消息处理机制

当有消息产生时,操作系统会把这条消息放到应用程序的消息队列中,应用程序通过GetMessage 函数从这个队列中取出一条具体的消息,并通过DispatchMessage函数把消息交给操作系统,后者调用应用程序的窗口过程,即窗口过程函数WndProc进行处理。该函数利用switch-case结构来对消息进行判别并分类处理。

Mfc消息处理机制

当我为对话框类添加一个鼠标左键按下这一消息相应函数之后,源文件中会增加下述三处代码。

消息响应函数原型

在ControlCardDlg类的头文件中,新增如下代码
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);

消息映射

在ControlCardDlg类的源文件中,新增如下红色标记代码
BEGIN_MESSAGE_MAP(CControlCardDlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_EN_CHANGE(IDC_EDIT10, &CControlCardDlg::OnEnChangeEdit10)
ON_NOTIFY(UDN_DELTAPOS,IDC_SPIN11,&CControlCardDlg::OnDeltaposSpin11)
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
BEGIN_MESSAGE_MAP和END_MESSAGE_MAP()这两个宏之间定义了该类的消息映射表,其中新增的这个映射宏,能够将鼠标左键按下消息与一个消息响应函数关联起来,通过这个机制,一旦有消息产生,程序就会调用响应的消息响应函数来进行处理。

消息响应函数的定义

在ControlCardDlg类的源文件中,新增函数定义代码部分
void CControlCardDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值

       CDialogEx::OnLButtonDown(nFlags, point);
}
通过我们在mfc项目中添加一个消息,我们发现,mfc项目只要遵照上述步骤,定义了与消息有关的三处信息后,就可以实现消息的响应处理。MFC中采用的这种消息处理机制称为MFC消息映射机制。

 

总结

Windows消息机制是Win32模式,C语言模式,而MFC的消息处理机制虽然以C模式为多,但是用在了C++面向对象环境里。Win32模式可以理解为底层,MFC的可以理解为应用层。

友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内