SDK对消息的处理过程和MFC消息映射及MFC中类产的对象与窗口

本文详细介绍了MFC中的SDK消息处理机制与消息映射机制。SDK消息处理流程包括消息的产生、传递到操作系统消息队列及最终由窗口过程处理等步骤。而MFC采用消息映射机制来处理消息,通过窗口句柄与C++对象的关联实现消息的高效处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. (SDK消息处理机制)当有产生消息——————>>”操作系统”——————>>”操作系统消息队列”——————>>”由应用程序调用getmessage函数从操作系统消息队列中取得消息”——————>>”应用程序由dispatchmessage路由到操作系统”————>>操作系统调用窗口过程(窗口过程函数)处理

2. MFC是对消息进行处理的方式是消息映射机制

消息映射的实现的方式:

1).在基类中针对每一种消息做一个虚函数(c++的多态性);(消息太多如果利用这种方式太浪费内存MFC并没有使用这种方式)

2)后台维护窗口类的对象的指针和句柄有一个对照表 当我们收到一个消息的时候(消息结构体的第一个参数就是与那个窗口有关的句柄) 通过句柄可以找到c++类的对象的指针 把指针传给基类 然后基类调用WindowProc();对消息进行处理

3.MFC)当有产生消息——————>>”相关的窗口句柄”——————>>” 通过句柄和对象的指针对照表”——————>>”交给基类”——————>>”基类调用WindowProc()”————>>” WindowProc()调用OnWndMsg()”——————>>”查看窗口是否有DECLARE_MESSAGE_MAP() 和 它的构造函数是否有相关的注释宏

BEGIN_MESSAGE_MAP(CDraw1View, CView)
//{{AFX_MSG_MAP(CDraw1View)
// NOTE - the ClassWizard will add and remove mapping macros here.
//    DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()

”。————>>”如果没有则由基类处理”


MFC中类的对象与窗口

1、对象与窗口是怎么相互关联的?m_handle

2、对象与窗口的生命周期一样么?不一定

3、窗口是由谁操作的?对象

4、窗口的创建过程?设计、创建、显示、更新、消息循环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值