您的位置:首页 > 其它

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息