MFC 自定义消息的添加

编译器:VS2015 语言C++
在工作中有时会碰到添加自定义消息,比如通信时接收数据线程在接到数据后需要发送消息给主界面,进行刷新数据。下面开始实现此过程:
1.建立一个MFC工程,名称随意,比如Test(基于对话框,相信你会建立MFC工程,这个如果不会,你还是先别玩了)
2.在CTestDlg.h文件中(在#pragma once下)添加两个自定义消息:

  #define  WM_MY_MSG  WM_USER+100
  #define  WM_READ_MSG 11

3.同样在CTestDlg.h中添加自定义消息类成员函数:

 afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);//自定义消息函数

4.CTestDlg.cpp中添加函数体

 LRESULT CTestDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)
 {
 }

5.添加消息映射

 BEGIN_MESSAGE_MAP(CTestDlg, CDialogEx)
 ......
 ON_MESSAGE(WM_MY_MSG, OnMyMessage)
 ......
 END_MESSAGE_MAP()

6.为工程新建类CMyMsg
7.在CMyMsg.cpp中添加自定义消息,include底下就行(这个要和第二步中定义的一致)

#define  WM_READ_MSG 11

8.在CMyMsg.h添加类成员变量和函数作为接口

    private:
    HWND   m_myhwnd;       //接收传值句柄
    UINT   m_myMsg;        //接收传值消息
    public:
    void    SetConn(HWND hwnd, UINT Msg);

9 .在CMyMsg.cpp添加函数体

   void  CMyMsg::SetConn(HWND hwnd, UINT Msg)
   {
      m_myhwnd=hwnd;
      m_myMsg=Msg;
   }

10.在CMyMsg.cpp中,需要触发消息的地方添加:

::PostMessage(m_myhwnd, m_myMsg, WM_READ_MSG, 0);
测试时可以这么来:新定义一个函数,在此函数中添加上面代码,然后在主窗口中添加一按钮,点击按钮的时候让调用这个函数就行

11.回到CTestDlg.cpp中,在OnInitDialog()的return前,将主窗口句柄和自定义消息类型传到
CMyMsg中:

 CMyMsg m_msg;
 m_msg.SetConn(m_hWnd,WM_MY_MSG);
 注意别忘了添加#include "MyMsg.h"

12.在第四步中自定义消息中添加:

   switch (wParam)
 {
     case  WM_READ_MSG:
              MessageBox(_T("自定义消息来了"));
               break;
      default:
               break;    
  }   

这样自定义消息就添加完成了,大家可以试试

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值