服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - MFC自定义消息的实现方法

MFC自定义消息的实现方法

2021-01-22 11:55C语言程序设计 C/C++

这篇文章主要介绍了MFC自定义消息的实现方法,通过该示例可以更好的理解MFC的消息封装机制,以便更加灵活的打造个性化的windows应用程序,需要的朋友可以参考下

一、概述:

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

二、实现方法:

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

?
1
#define WM_MyMessage (WM_USER+100)

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

?
1
2
3
4
5
6
7
8
9
class CTestDlg : public CDialog
{
protected:
 ……
  // 生成的消息映射函数
  ……
  afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam); // add lyw
  DECLARE_MESSAGE_MAP()
  ……

4. 添加消息映射处理,在CTestDlg.cpp中人找到如下部分添加代码:
 

?
1
2
3
4
BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
   ……
  ON_MESSAGE(WM_MyMessage, OnMyMessage)
END_MESSAGE_MAP()

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

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

6. 如果要发送一个自定义的消息,需要使用代码
 

?
1
SendMessage( WM_MyMessage, 0, 0);

或者

?
1
PostMessage(WM_MyMessage, 0, 0);

如果要定义系统唯一的消息让多个应用程序去处理,不同之处如下:

1. 把上面2步骤中的宏 #define WM_MyMessage (WM_USER+100) 使用如下代码代替:

?
1
static UINT WM_MyMessage = RegisterWindowMessage("myMessage");

2. 上面4步骤中的代码用如下代替:

?
1
2
3
4
BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
   ……
  ON_REGISTERED_MESSAGE(WM_MyMessage, OnMyMessage)
END_MESSAGE_MAP()

3.测试消息时,如果要让多个应用程序都接收到这个消息,需要使用:

?
1
::SendMessage(HWND_BROADCAST, WM_MyMessage, 0, 0);

延伸 · 阅读

精彩推荐
  • C/C++深入C++拷贝构造函数的总结详解

    深入C++拷贝构造函数的总结详解

    本篇文章是对C++中拷贝构造函数进行了总结与介绍。需要的朋友参考下...

    C++教程网5182020-11-30
  • C/C++C语言main函数的三种形式实例详解

    C语言main函数的三种形式实例详解

    这篇文章主要介绍了 C语言main函数的三种形式实例详解的相关资料,需要的朋友可以参考下...

    ieearth6912021-05-16
  • C/C++OpenCV实现拼接图像的简单方法

    OpenCV实现拼接图像的简单方法

    这篇文章主要为大家详细介绍了OpenCV实现拼接图像的简单方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    iteye_183805102021-07-29
  • C/C++关于C语言中E-R图的详解

    关于C语言中E-R图的详解

    今天小编就为大家分享一篇关于关于C语言中E-R图的详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看...

    Struggler095962021-07-12
  • C/C++C语言实现双人五子棋游戏

    C语言实现双人五子棋游戏

    这篇文章主要为大家详细介绍了C语言实现双人五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    两片空白7312021-11-12
  • C/C++c/c++实现获取域名的IP地址

    c/c++实现获取域名的IP地址

    本文给大家汇总介绍了使用c/c++实现获取域名的IP地址的几种方法以及这些方法的核心函数gethostbyname的详细用法,非常的实用,有需要的小伙伴可以参考下...

    C++教程网10262021-03-16
  • C/C++使用C++制作简单的web服务器(续)

    使用C++制作简单的web服务器(续)

    本文承接上文《使用C++制作简单的web服务器》,把web服务器做的功能稍微强大些,主要增加的功能是从文件中读取网页并返回给客户端,而不是把网页代码...

    C++教程网5492021-02-22
  • C/C++c/c++内存分配大小实例讲解

    c/c++内存分配大小实例讲解

    在本篇文章里小编给大家整理了一篇关于c/c++内存分配大小实例讲解内容,有需要的朋友们可以跟着学习参考下。...

    jihite5172022-02-22