1. 首先确定 你要处理的消息。是什么类型的消息。
WTL & ATL 消息种类:
消息处理宏的目的是将消息和相应的处理函数(该窗口的成员函数)联系起来。
根据窗口消息的类别:普通窗口消息(如WM_CREATE),命令消息(WM_COMMANS)和通知消息(WM_NOTIFY)。
响应的消息处理宏也分类为三种:
普通消息处理宏——MESSAGE_HANDLER和MESSAGE_RANGE_HANDLER
命令消息处理宏有五个——COMMAND_HANDLER,COMMAND_ID_HANDLER,COMMAND_CODE_HANDLER,COMMAND_RANGE_HANDLER和COMMAND_RANGE_CODE_HANDLER。
通知消息处理宏有五个——NOTIFY_HANDLER,NOTIFY_ID_HANDLER,NOTIFY_CODE_HANDLER,NOTIFY_RANGE_HANDLER和NOTIFY_RANGE_CODE_HANDLER 。
2.消息判别:
控件通知消息,是Windows标准控件来通告它的父窗口(这个窗口通常是程序员创造的)它的自身发生了什么改变,或有什么跟想相关的事件发生,
比如Edit控件在输入字符时,会向它的父窗口发送EN_CHANGED消息。这些消息都是通过WM_NOTIFY消息来传递给父窗口的,在这个消息的wParam和lParam参数中包含了更进一步的信息。
当用户单击菜单,或者点击一个按钮、点击工具栏按钮时,都会发生一个命令消息(WM_COMMAND消息)给父窗口,你可以通过判断这个消息的wParam参数和lParam不同的位来判断用户到底进行了什么操作,然后你就可以来响应用户的操作了。
3.特殊处理:
WTL消息链最重要的几个points:
1、bHandled,设为TRUE消息会继续向下传递,反之结束传递,你的表述存在问题。
2、CHAIN_MSG_MAP(theChainClass),强制让消息向链类传递(让链类处理)。
3、CHAIN_MSG_MAP_ALT(theChainClass,id)与ALT_MSG_MAP(id)配合使用,强制进入链类处理ALT_MSG_MAP以下的消息。
4、REFLECT_NOTIFICATIONS(),反射Notify消息,让子窗口能够处理到Notify消息。
接下来,您在参考下这篇文章:
http://www.cnblogs.com/vsense/archive/2009/07/28/1533435.html