▲通过类向导给类添加一个消息响应函数时(如在CMainFrame类中添加WM_CLOSE消息响应),会增加以下3代码段:
1.头文件CMainFrame.h类的定义中
//{
{AFX_MSG(CMainFrame) //注释宏
afx_msg void OnClose(); //添加的消息响应函数原型声明
//}}AFX_MSG //注释宏
afx_msg也是一个宏,表示后面的函数原型为消息响应函数原型。
2.源文件MainFrame.cpp中
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{
{AFX_MSG_MAP(CMainFrame)
ON_WM_CLOSE() //添加的宏
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
ON_WM_CLOSE()宏将消息WM_CLOSE与消息响应函数OnClose()关联起来。
3.源文件MainFrame.cpp中
void CMainFrame::OnClose()
{
// 响应消息时的处理代码写在此处
CFrameWnd::OnClose();
}
▲MFC的消息处理是靠调用OnWndMsg()来处理的,其过程是先检查有没有消息响应函数原型声明(1中所述),再检查有无消息响应函数关联宏(2中所述),若检查通过则用3中所