第7节  消息反射简介

更新于 2026年10月10日 版权声明
第7节 消息反射简介

消息反射,也叫反射型消息映射,是一种特殊的消息映射。反射型消息映射是将子窗口消息与父窗口类成员函数关联,用于接收子窗口内鼠标、键盘等各种事件传递回的消息。而普通消息映射是将父窗口消息与类成员函数关联,用于接收父窗口事件传递回来的消息,如图9-37所示。

图示

图9-37 消息映射和消息反射

在类向导的消息映射分页中选中父窗口类名称,在右边消息列表中显示的全部是普通消息映射(例如,WM_INITDIALOG等);选中下面的单个控件ID,可以建立某个控件的消息反射函数,单击按钮的消息其实也是一个反射型消息映射,如图9-38所示。常用的控件消息反射类型见表9-11。

图示

图9-38 建立消息反射函数

表9-11 常用的控件消息反射类型

图示

打开本章第6节建立的“tr”工程继续添加一些消息反射函数,以加深对消息反射的理解。

1)在类视图中的主对话框类上单击鼠标右键,在弹出的快捷菜单中,选择“Add Windows Message Handler”命令,如图9-39所示。

图示

图9-39 添加消息反射函数

2)在类向导右下方列表中,选中IDC_SALA控件,添加消息反射函数,如图9-40所示。

图示

图9-40 添加EN_CHANGE消息反射函数

3)单击“OK”按钮完成消息反射函数的创建,并修改代码。

图示(https://www.daowen.com)

4)在对话框的资源编辑器中,在子窗口上单击鼠标右键,选择相应的命令也可以建立消息反射函数,如图9-41所示。

图示

图9-41 通过右键菜单添加消息反射函数

5)选择“ClassWizard”或“Events”命令,都可以添加控件的消息反射函数,如图9-42所示。

图示

图9-42 添加列表控件的消息反射函数

6)添加列表控件的LVN_ITEMCHANGED消息反射函数后修改代码。

图示

7)编译并运行,测试代码。

在工资编辑框内,通过消息反射函数的过滤处理后,只允许输入数字和小数点。当选择不同列表项时,选中行的数据自动显示在编辑框内。

总结反射型消息映射的特点如下,如图9-43所示。

①在反射型的消息映射中,必须与某个子窗口ID相关联。

②消息类型一般都带有“N”字,例如,BN_代表“Button Notify”,EN_代表“Edit Notify”等。

③在ON_NOTIFY的消息映射函数中,注意使用第一个参数(NMHDR*),根据不同的控件可以传递当前节点的句柄或ID等有用的信息。

图示

图9-43 反射型消息映射的特点

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)