`
javababy1
  • 浏览: 1166546 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

MFC自定义消息

 
阅读更多

MFC自定义消息

用户可以为了特定的目的而定义自己的消息,这些消息也称为自定义消息。进行自定义消息的方法很简单,一般有两种:一种是利用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)
{
//函数体
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics