MFC 自定义消息

原创 2013年12月02日 15:06:21

消息映射、循环机制是Windows程序运行的基本方式。VC++ MFC 中有许多现成的消息句柄,可当我们需要完成其它的任务,需要自定义消息,
就遇到了一些困难。在MFC ClassWizard中不允许添加用户自定义消息,所以我们必须手动在程序中添加相应代码,以便可以象处理其它消息一样处理自定义消息。

自定义消息的步骤如下:
(1)建立Single Document的MFC Application,工程名为:MyMessage
(2)自定义消息:
第一步:定义消息
在Resource.h中添加如下代码:

//推荐用户自定义消息至少是UM_USER+100,因为很多新控件也要使用UM_USER消息。UM:User Message
#define UM_MY_MESSAGE (UM_USER+1)

第二步:声明消息处理函数
选择CMainFrame类中添加消息处理函数
在MainFrm.h文件中,类CMainFrame内,声明消息处理函数,代码如下:

protect:
    afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam); 

第三步:实现消息处理函数
在MainFrm.cpp文件中添加如下代码:

LRESULT CMainFrame::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
      //TODO: Add your message handle code
      return 0;
}

 第四步:在CMainFrame类的消息块中,使用ON_MESSAGE宏指令将消息映射到消息处理函数中

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
    ON_WM_CREATE()
    ON_MESSAGE(UM_MY_MESSAGE,OnMyMessage)
    //ON_REGISTERED_MESSAGE (WM_MY_MESSAGE,OnMyMessage)
END_MESSAGE_MAP()

 如果用户需要一个定义整个系统唯一的消息,可以调用SDK函数RegisterWindowMessage定义消息:
在Resource.h中将代码

#define UM_MY_MESSAGE (UM_USER+1)

替换为:

static UINT UM_MY_MESSAGE=RegisterWindowMessage(_T("User"));

并使用ON_REGISTERED_MESSAGE宏指令取代ON_MESSAGE宏指令,其余步骤同上。
注:如果仍然使用ON_MESSAGE宏指令,compile可以通过,但是无法响应消息。
当需要使用自定义消息时,可以在相应类中的函数中调用函数PostMessage或SendMessage发送消息PoseMessage(WM_MY_MESSAGE,O,O)。

原来来自:http://www.cnblogs.com/xulei/archive/2007/11/22/968170.html,略有改动


相关文章推荐

mfc 自定义消息

  • 2013年07月05日 09:17
  • 24KB
  • 下载

在MFC中添加用户自定义消息

首先弄清楚两点:(1)谁要发送这个消息(2)谁要接受这个消息。  用一个简单的例子来说明。对象A向B(也可以就是A到A)发送消息。  1 发送消息  首先在A的头文件中定义这个消息:    #defi...

MFC中添加自定义消息

  • 2012年11月12日 23:18
  • 32KB
  • 下载

MFC自定义消息

  • 2013年11月28日 09:44
  • 92KB
  • 下载

Vc/MFC中自定义消息及其PostMessage触发使用

http://blog.csdn.net/ztz0223/article/details/2058402 http://blog.csdn.net/a8082649/article/details/...

MFC 自定义消息实现

  • 2013年11月07日 20:04
  • 139KB
  • 下载

MFC自定义消息用法总结

接触MFC有半年时间了,中间编过不少小程序。但是,

MFC下的自定义消息代码

  • 2009年06月18日 22:56
  • 1.83MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MFC 自定义消息
举报原因:
原因补充:

(最多只允许输入30个字)