MFC消息映射机制:
在每个能接收和处理消息的类中,定义一个消息与消息处理函数的映射表,即消息映射表。MFC有一个窗口句柄与C++对象指针的映射表,当窗口收到消息时,消息的第一个参数指明了该消息与哪个窗口句柄相关,通过映射表找到C++对象指针,然后将这个指针传递给应用程序框架窗口类的基类,基类调用WindowProc函数(在wincore.cpp文件中),这是一个虚函数,函数内部调用OnWndMsg函数,消息处理就是在这个函数内完成的,该函数也在wincore.cpp中。OnWndMsg函数首先判断窗口类中是否有消息响应函数,首先在子类的头文件中看DECLARE_MESSAGE_MAP()宏之上、两个AFX_MSG注释宏之间是否有消息响应函数原型的声明;然后在子类源文件中看BEGIN_MESSAGE_MAP和END_MESSAGE_MAP()两个宏之间是否有消息映射宏,找到消息响应函数,由此函数对消息进行处理,如果没有找到,则交给基类处理。
时间: 2024-10-12 18:51:20