现在的位置: 首页 > 综合 > 正文

MFC 消息映射机制

2013年05月28日 ⁄ 综合 ⁄ 共 1109字 ⁄ 字号 评论关闭

一,消息映射机制

1,消息响应函数:(例:在CDrawView类响应鼠标左键按下消息)

 1)在头文件(DrawView.h)中声明消息响应函数原型。

//{{AFX_MSG(CDrawView)   //注释宏
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
//}}AFX_MSG   //注释宏

说明:

在注释宏之间的声明在VC中灰色显示。afx_msg宏表示声明的是一个消息响应函数。

 2)在源文件(DrawView.cpp)中进行消息映射。

BEGIN_MESSAGE_MAP(CDrawView, CView)
 //{{AFX_MSG_MAP(CDrawView)
 ON_WM_LBUTTONDOWN()
 //}}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()

说明:

在宏BEGIN_MESSAGE_MAP()与END_MESSAGE_MAP()之间进行消息映射。

宏ON_WM_LBUTTONDOWN()把消息WM_LBUTTONDOWN与它的响应函数OnLButtonDown()相关联。这样一旦有消息的产生,就会自动调用相关联的消息响应函数去处理。

宏ON_WM_LBUTTONDOWN()定义如下:

#define ON_WM_LBUTTONDOWN() 
 { WM_LBUTTONDOWN, 0, 0, 0, AfxSig_vwp, 
  (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnLButtonDown },

 3)源文件中进行消息响应函数处理。(DrawView.cpp中自动生成OnLButtonDown函数轮廓,如下)

void CDrawView::OnLButtonDown(UINT nFlags, CPoint point) 
{
 // TODO: Add your message handler code here and/or call default
 CView::OnLButtonDown(nFlags, point);
}

说明:

可见当增加一个消息响应处理,在以上三处进行了修改。可在消息响应函数里添加消息处理代码完成对消息的响应、处理。

抱歉!评论已关闭.