MFC自定义消息

一、背景

消息机制是windows程序的典型运行机制,在MFC中有很多已经封装好了的消息,。但是在有些特殊情况下我们需要自定义一些消息去完成一些我们所需要的功能,这时候MFC的向导不能帮助我们做到这一点。对此,我们可以通过添加相应的代码去完成这个功能。

二、实现方法

添加自定义消息操作如下:
1. 建立MFC工程,如基于对话框的应用程序,Test。
2. 在资源中添加要处理的消息的值,即在CTestDlg.h中添加 如下代码。 (因为很多MFC的消息是在WM_USER内的,所以这里用比WM_USER大的消息)

//WM_USER		是用户自定义消息的一个起始值
//WM_USER+100	是为了区分系统消息和用户消息,避免冲突
#define WU_A	WM_USER+100	
#define WU_B	WM_USER+101	
#define WU_C	WM_USER+102	
#define WU_D	WM_USER+103	
#define WU_E	WM_USER+104	

3. 声明消息处理函数,在CTestDlg.h中添加如下代码: 

class CTestDlg : public CDialog
{ 
    protected:

      afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam); // 消息映射函数
      DECLARE_MESSAGE_MAP() // 消息宏

}

4、在接收消息的窗口类中,重写消息响应函数。可以在窗口类的消息映射表中添加消息处理函数。在CTestDlg.cpp中人找到如下部分添加代码:

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	ON_WM_CREATE()

	//ON_MESSAGE响应的是自定义消息
	//产生WU_A消息,自动调用OnMyChange()函数
	ON_MESSAGE(WU_A, OnMyChange)

	
END_MESSAGE_MAP()

5. 实现自己的自定义消息处理:

LRESULT CTestDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
  //MessageBox("recv msg success");
  //添加自己的消息处理
  ……
  return 0;  
}

6. 在需要发送自定义消息的地方,调用CWnd类的SendMessage或PostMessage方法来发送消息。


HWND hWnd = ::FindWindow(NULL, L"Window Title");
if (hWnd != NULL)
{
    ::SendMessage(hWnd, WM_MY_CUSTOM_MSG, (WPARAM)0, (LPARAM)0);
}

参考:

MFC自定义消息的实现方法 - rainbow70626 - 博客园

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值