代码改变世界

消息映射宏

2012-10-08 14:55  残月星辰  阅读(824)  评论(0编辑  收藏  举报

 

MFC提供不同的消息映射宏 :

1.Windows 消息映射宏

2.命令消息映射宏

3.控件通知消息映射宏

4.通知消息映射宏

5.反射消息映射宏

6.扩展消息映射宏

具体介绍消息映射宏,

NO.1 Windows 消息映射宏 :

       windows消息映射宏用于处理普通的窗口消息。此类消息映射宏前缀为ON_WM_,并且没有参数。因为它对应的消息和消息处理函数的函数名称、函数原型是确定的。MFC提供了这类消息处理函数的定义和默认实现。每个这样的宏处理不同的windows消息。由于MFC中的cwnd类是窗口类的基类,因此,在定义windows消息映射宏时,其消息处理函数都是Cwnd中的方法。

NO.2 命令消息映射宏 :

   命令消息WM_COMMAND是一种特殊的窗口消息,它从一个窗口发送到另外一个窗口,以处理来自用户的请求。

NO.3 控件通知消息映射宏 :

   控件通知消息是指控件窗口发送到其父窗口的消息。父窗口在消息映射表中通过添加控件通知消息映射宏来处理控件窗口发送的通知消息。

   控件通知消息可以认为是一种特殊的命令消息,处理的窗口消息均为WM_COMMAND,只是控件通知消息的消息代码可以随意地,不一定是CN_COMMAND.

MFC提供的控件通知消息映射宏为ON_CONTROL.

NO.4  通知消息映射宏 :

   控件通知消息映射宏处理的窗口消息为WM_COMMAND,通知消息映射宏处理窗口消息为WM_NOTIFY.

对于Windows标准控件,例如编辑框、组合框、列表框、按钮、滚动条、静态控件等发送WM_COMMAND消息到其他窗口。

对于windows通用控件,例如列表视图、树视图、微调按钮等控件发送WM_NOTIFY消息到其他窗口。

NO.5 反射消息映射宏 :

   反射消息是指子窗口向父窗口发送的通知消息或控件通知消息,父窗口将该消息传化为相应的反射消息发送给子窗口优先处理。

反射消息分为两大类:

1.与通知消息有关的反射消息映射宏  ON_NOTIFY_REFLECT

2.与控件通知消息有关的反射消息映射宏  ON_CONTROL_REFLECT

NO.6 扩展消息映射宏 :

扩展消息映射宏与普通的消息映射宏相比,具有以下两个特点

1.处理函数中包含命令ID或控件ID。

2.可以在运行时确定是否向下传递。

扩展消息映射宏的两个特点是通过扩展消息处理函数体现的,扩展消息处理函数中包含命令ID或者控件ID的参数,并且扩展消息处理函数有返回值,为BOOL类型。如果扩展消息处理函数返回值为true,命令将不再向下传递,否则命令继续向下传递。