目录
接下:VC++ OnWndMsg 函数(wincore.cpp)
消息映射机制
可以浏览一下Draw项目CDrawView的头文件和源文件,可以发现在为视类增加一个鼠标左键按下这一消息响应函数之后,在文件中增加了三处代码。
(1)消息响应函数原型在CDrawView类的头文件(DrawView.h)中,有如下所示代码。
// 生成的消息映射函数
protected:
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
如上所示这段代码中,在OnLButtonDown函数声明的前面有一个afx_msg限定符,这是一个宏。该宏表明这个函数是一个消息响应函数的声明。
(2)ON_WM_LBUTTONDOWN消息映射宏在CDrawView类的源文件(DrawView.cpp)中,有下所示代码。
BEGIN_MESSAGE_MAP(CDrawView, CView)
// 标准打印命令
ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CView::OnFilePrintPreview)
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
上述例5-4所示代码中,BEGIN_MESSAGE_MAP和END_MESSAGE_MAP()这两个宏之间定义了CDrawView类的消息映射表,其中有一个ON_WM_LBUTTONDOWN消息映射宏,这个宏的作用就是把鼠标左键按下消息(WM_LBUTTONDOWN)与一个消息响应函数关联起来(在本例中是把WM_LBUTTONDOWN消息与OnLButtonDown函数关联起来)。通过这种机制,一旦有消息产生,程序就会调用相应的消息响应函数来进行处理。
(3)消息响应函数的定义在CDrawView类的源文件(DrawView.cpp)中,可以看到OnLButtonDown函数的定义。

最低0.47元/天 解锁文章
2323

被折叠的 条评论
为什么被折叠?



