1、定义消息。在Windows中,所有的消息都用一个特定的整数值来表示,为了避免自定义消息与已存在的其他消息发生冲突,应该利用Windows提供的一个常量:WM_USER,小于这个常量的是系统保留的。即用户自定义的消息至少为WM_USER+1,注意最后表示的消息的数值不要超过0x7FFF。在开发Windows95应用程序时,Microsoft推荐用户自定义消息至少是WM_USER+100,因为很多新控件也要使用WM_USER消息。
在类的头文件中加入
#define WM_MESSAGE_NAME WM_USER + 101
2、在类头文件的AFX_MSG块中声明消息处理函数:
afx_msg LRESULT OnMessageName(WPARAM wParam,LPARAM lParam);
其中,LRESULT为返回值,也可以是void。参数为wParam和lParam
3、在类的实现文件中,使用ON_MESSAGE宏指令将消息映射到消息处理表中。
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_WM_TIMER()
ON_MESSAGE(WM_MESSAGE_NAME,OnMessageName )//注意这条语句的后面没有分号
4、实现消息处理函数。
LRESULT CXXClass::OnMessageName(WPARAM wParam,LPARAM lParam)
{
return 0;
}
其中,CXXClass是这个函数所在的类名。
做好以上4个步骤就实现了添加自己定义的消息了,在你需要发送消息的时候用postmessage或sendmessage发送这个消息就好了。
发表评论 评论 (0 个评论)