MFC 自定义消息
2014-07-18 19:33
260 查看
Windows是一种消息机制,操作系统与程序之间是通过消息进行交流的,在MFC中定义了一些WM_消息,但是这些消息并不是可以响应任意的消息,所以就需要进行自定义消息。
自定义消息的时候应该处理三个地方:
第一:在头文件中的消息响应函数的声明
第二:在实现文件中的消息映射表
第三:在实现文件中队响应函数进行实现。
下面就对一个用户自定义消息进行定义:
具体步骤如下:
1、 在头文件stdafx.h中增加一个自定义消息宏WM_USERMESSAGE,并且为其指定ID号,关于ID号的指定应该使用WM_USER + NUM,其中NUM代表一个整数,为了防止用户定义的消息ID与系统的消息ID冲突,MS(Microsoft)定义了一个宏WM_USER,小于WM_USER的ID被系统使用,大于WM_USER的ID被用户使用,因此,WM_USER也称为用户消息边界。
#define WM_USERMESSAGE WM_USER + 10
2、 在头文件中的DECLARE_MESSAGE_MAP()之前声明一个回调函数,注意这个回调函数的声明格式为:
afx_msg LRESULT OnFuctionName(WPARAMwParam, LPARAM lParam);
其中:返回值必须为LRESULT,不可为void类型。
3、 在实现类的文件中添加消息响应函数,这个消息响应函数在BEGIN_MESSAGE_MAP,END_MESSAGE_MAP之间,并且形式为:
ON_MESSAGE(WM_USERMESSAGE,OnFuctionName)
ON_MESSAGE是MFC里面的一个自定义消息映射宏,它的作用是绑定一个自定义的消息和该消息的响应函数。
原型:ON_MESSAGE(message, memberFxn )
参数: message:消息的ID。
memberFxn :映射message的消息函数
备注: 用户自定义消息通常定义在WM_USER(0x0400)至0x7FFF范围内,用户定义的任何消息都不是正规的windows窗口消息WM_MESSAGE 。用户自定义消息必须明确地在程序中用ON_MESSAGE宏来声明,从而绑定一个消息响应函数。
4、 在实现类中写实现类的实现体,格式如下所示:
LRESULT CUSERMessageDlg::OnFuctionName(WPARAMwParam, LPARAM lParam)
{
//其他代码
return 0;
}
自定义消息的时候应该处理三个地方:
第一:在头文件中的消息响应函数的声明
第二:在实现文件中的消息映射表
第三:在实现文件中队响应函数进行实现。
下面就对一个用户自定义消息进行定义:
具体步骤如下:
1、 在头文件stdafx.h中增加一个自定义消息宏WM_USERMESSAGE,并且为其指定ID号,关于ID号的指定应该使用WM_USER + NUM,其中NUM代表一个整数,为了防止用户定义的消息ID与系统的消息ID冲突,MS(Microsoft)定义了一个宏WM_USER,小于WM_USER的ID被系统使用,大于WM_USER的ID被用户使用,因此,WM_USER也称为用户消息边界。
#define WM_USERMESSAGE WM_USER + 10
2、 在头文件中的DECLARE_MESSAGE_MAP()之前声明一个回调函数,注意这个回调函数的声明格式为:
afx_msg LRESULT OnFuctionName(WPARAMwParam, LPARAM lParam);
其中:返回值必须为LRESULT,不可为void类型。
3、 在实现类的文件中添加消息响应函数,这个消息响应函数在BEGIN_MESSAGE_MAP,END_MESSAGE_MAP之间,并且形式为:
ON_MESSAGE(WM_USERMESSAGE,OnFuctionName)
ON_MESSAGE是MFC里面的一个自定义消息映射宏,它的作用是绑定一个自定义的消息和该消息的响应函数。
原型:ON_MESSAGE(message, memberFxn )
参数: message:消息的ID。
memberFxn :映射message的消息函数
备注: 用户自定义消息通常定义在WM_USER(0x0400)至0x7FFF范围内,用户定义的任何消息都不是正规的windows窗口消息WM_MESSAGE 。用户自定义消息必须明确地在程序中用ON_MESSAGE宏来声明,从而绑定一个消息响应函数。
4、 在实现类中写实现类的实现体,格式如下所示:
LRESULT CUSERMessageDlg::OnFuctionName(WPARAMwParam, LPARAM lParam)
{
//其他代码
return 0;
}