全部博文(51)
分类: C/C++
2008-08-28 09:08:23
消息映射机制是Windows编程的核心内容。Windows 下的应用程序也都是通过消息驱动的机制来进行工作的。虽然VC开发环境自带了大量的系统消息处理函数,但我们实际的程序开发过程中总还是避免不了要写一些自定义的消息处理函数以满足所编写的软件功能的需要。那么在VC中如何定义自己的消息处理函数呢?其步骤如下:
1、在要定义消息映射函数的类的首部通过宏定义的方式定义一个用户类型的消息标识。定义方法如下:#define WM_USER1 WM_USER + 1 其中的WM_USER是系统定义好的用户类型的消息。只要以此为自定义消息的起点加上一个偏移量在0~0x3FFF之间的值,就不会和系统定义的其它消息发生冲突了。
2、在类上点击右键,然后在弹出的菜单中选择“添加成员函数”(Add member Function)。在弹出的添加函数对话框中的函数类型框中输入函数的类型。如:afx_msg LRESULT 消息处理函数一定要以afx_msg关键字开头,表明是全局函数。LRESULT是函数的类型。表明是系统回调函数。也可以是其它的类型。如int,void 等等合法的数据类型。在函数名称框中输入函数名。如:MyFunction(WPARAM wParam, LPARAM lParam).这两个参数是系统用于传递消息的附加参数。W开头的是十六位的信息参数。L开头的是三十二位的信息参数。
3、打开类的源文件。找到“BEGIN MESSAGE MAP” 和 "END MESSAGE MAP"。在两者之间声明消息与消息处理函数。如:ON_MESSAGE(WM_USER1, MyFunction).ON_MESSAGE是定义用户消息映射函数的系统函数。消息映射语句最好从 "//}}AFX_MSG_MAP”它的下一行开始写起。因为它是系统维护自动生成代码的标记。如果写在它的上面,有可能会被删除。
4、在类的源文件中找到刚定义的消息函数,写入实现代码。
5、在需要调用消息映射函数的地方用SendMessage(WM_USER1);即可调用所定义的函数。WM_USER1 就是我们刚定义的消息名称。