现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

MFC自定义消息

2012-08-06 06:51 工业·编程 ⁄ 共 995字 ⁄ 字号 暂无评论

    用户可以为了特定的目的而定义自己的消息,这些消息也称为自定义消息。进行自定义消息的方法很简单,一般有两种:一种是利用ON_MESSAGE宏,另外一种就是创建自己的消息映射宏,这一种方法可以定制消息的参数类型,而不像前者只能使用固定的消息参数类型。但是一般情况下不需要定制消息的参数类型,因此这里对此不予介绍。本节主要介绍第一种比较常用的方法。

    预定义常量值WM_USER(0x0400)是系统专门用来为实现处理用户自定义的消息而提供的接口,需要自定义消息时,只需要以如下形式定义即可:

WM_USER+X

    其中X是一个非负整数值。另外,需要注意的是,用户自定义消息的值范围是有规定的,如6.1.3小节所述,其值介于WM_USER和0x7FFF之间,所以,为X取值时应该注意这个问题。下面结合具体的实例来详细介绍自定义消息的实现方法。

MFC自定义消息四部曲
1、定义消息变量
2、添加消息映射
3、添加消息处理函数
4、实现消息处理函数

1,3在类的头文件中设置

2,在DoDataExchange函数下进行声明

以Socket的Accept例:

1、定义消息变量
#define     WM_USER_ACCEPT     WM_USER+101

2、添加消息映射
BEGIN_MESSAGE_MAP(CSocketView, CDialog)
     //{{AFX_MSG_MAP(CSocketView)
     ON_MESSAGE(WM_USER_ACCEPT,OnAccept)
     //}}AFX_MSG_MAP
END_MESSAGE_MAP()

3、添加消息处理函数
VC6.0
//{{AFX_MSG(CSocketView)
     afx_msg void OnAccept(WPARAM wParam, LPARAM
VS2005
//{{AFX_MSG(CSocketView)
     afx_msg LRESULT OnAccept(WPARAM wParam, LPARAM

lParam);
     //}}AFX_MSG

4、实现消息处理函数
VC6.0
void CSocketView::OnAccept(WPARAM wParam, LPARAM lParam)
{
//函数体
}
VS2005
LRESULT CSocketView::OnAccept(WPARAM wParam, LPARAM lParam)
{
//函数体
}

【上篇】
【下篇】

给我留言

留言无头像?