自定义消息有两种
一种是类似如下定义的非注册消息A

define WM_COUNT_MSG WM_USER+100

一种是类似如下定义的注册消息B

define WM_VIEW_UPDATE _T(“VIEW_UPDATE”)

static UINT WM_VIEW_UPDATE_MSG = RegisterWindowMessage(WM_VIEW_UPDATE);

对于A的使用方法是在.h文件中添加A的定义,同时增加如下语句
afx_msg LRESULT OnCountMsg(WPARAM,LPARAM);
在.cpp文件中增加以下语句
BEGIN_MESSAGE_MAP(CObserModelTestDlg, CDialogEx)
ON_MESSAGE(WM_COUNT_MSG,&CObserModelTestDlg::OnCountMsg)
END_MESSAGE_MAP()

LRESULT CObserModelTestDlg::OnCountMsg(WPARAM wParam,LPARAM lParam)
{
return 1;
}

对于B的使用方法是在.h文件中添加B的定义,同时增加如下语句
afx_msg LRESULT OnCountMsg(WPARAM,LPARAM);
在.cpp文件中增加以下语句
BEGIN_MESSAGE_MAP(CObserModelTestDlg, CDialogEx)
ON_REGISTERED_MESSAGE(WS_VIEW_UPDATE_MSG,&CObserModelTestDlg::OnCountMsg)
END_MESSAGE_MAP()

LRESULT CObserModelTestDlg::OnCountMsg(WPARAM wParam,LPARAM lParam)
{
return 1;
}

发送消息
无论是非注册消息A还是注册消息B,在发送消息的程序中,都要将A或B的定义重新写一遍。

1)向指定窗口发送消息的方法
HWND note = ::FindWindowW(NULL,L”DialogRecive”);
if (note != NULL)
{
::SendMessage(note, WM_COUNT_MSG,0,0);
}

2)广播消息
::PostMessageA(HWND_BROADCAST,WM_VIEW_UPDATE_MSG,0,0);

注意广播消息不会被子窗口接收到。例如在一个基于对话框的应用程序中。如果想让主对话框和其他非模态对话框都接收到广播消息。如果在主对话框的初始化函数中使用以下语句
BOOL CObserModelTestDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
m_msg_observer = std::shared_ptr(new UsMecha4DObserver());
m_msg_observer->Create(IDD_OBSERVEDlg);
m_msg_observer->ShowWindow(SW_SHOW);
}

那么m_msg_observer是接收不到广播消息的。

要想让CObserModelTestDlg和m_msg_observer都接收到广播消息。需要在应用程序
的InitInstance()中增加类似的语句
{
RESIVETESTDLG *DLG = new RESIVETESTDLG();
DLG->Create(IDD_DIALOG2);
DLG->ShowWindow(SW_SHOW);

CObserModelTestDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();

}

自定义消息的发送和接收的方法相关推荐

  1. DELPHI中自定义消息的发送和接收

    DELPHI中的消息处理机制 Delphi是Borland公司提供的一种全新的WINDOWS编程开发工具.由于它采用了具有弹性的和可重用的面向对象Pascal(object-orientedpasca ...

  2. ActiveMQ的消息的(含附件)发送和接收使用

    首先介绍一下ActiveMQ的版本:apache-activemq-5.10.2 启动MQ:activemq.bat 下面来编写MQ的发送类: 里面的发送ip和模式名称可以根据具体的实际情况填写. S ...

  3. IBM MQ 搭建测试环境并测试消息的发送和接收

    一,说明 MQ基于Linux环境的安装比较简单,读者可以去网上自行搜索. 本文主要在于MQ队列管理器相关的部分. OS Version: Red Hat Enterprise Linux Server ...

  4. python接收邮件内容启动程序_Python实现发送与接收邮件的方法详解

    本文实例讲述了Python实现发送与接收邮件的方法.分享给大家供大家参考,具体如下: 一.发送邮件 这里实现给网易邮箱发送邮件功能: import smtplib import tkinter cla ...

  5. python接收邮件g_Python接收Gmail新邮件并发送到gtalk的方法

    本文实例讲述了Python接收Gmail新邮件并发送到gtalk的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python # -*- coding: utf-8 - ...

  6. python接收最新邮件_Python接收Gmail新邮件并发送到gtalk的方法

    本文实例讲述了Python接收Gmail新邮件并发送到gtalk的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python # -*- coding: utf-8 - ...

  7. pop3服务器协议初始化失败,邮件的发送和接收故障处理的几点方法

    成天和邮件打交道,难免遇到邮件的发送和接收问题.通常遇到的问题有:网络问题,对方服务器的问题,DNS解析的问题,对方拒绝接收你的邮件等.可以通过以下一些简单的方法,诊断问题的所在: 1)分析NOT D ...

  8. 计算机网络没有接收数据,本地连接有发送无接收数据的解决方法

    "本地连接"有发送无接收数据的解决方法 发布时间:2013-07-23 23:34:03   作者:佚名   我要评论 在日常的网络维护中,常常出现"本地连接" ...

  9. Android Java使用JavaMail API发送和接收邮件的代码示例

    JavaMail是Oracle甲骨文开发的Java邮件类API,支持多种邮件协议,这里我们就来看一下Java使用JavaMail API发送和接收邮件的代码示例 使用Javamail发送邮件,必需的j ...

最新文章

  1. fseek获取大于4G的文件大小的问题
  2. MTP 多媒体传输协议
  3. python线程中再起线程_多线程 - Python中的线程化
  4. tensorflow中tf.random_normal和tf.truncated_normal的区别
  5. [基础题] 5.(*)按如下要求编写Java应用程序:(1)编写一个用于表示战斗能力的接口Fightable,
  6. Android 编程下设置 Activity 切换动画
  7. PowerCenter基础心得
  8. oracle 创建表空间_Oracle 创建和管理表
  9. Android使用Glide框架加载网络图片(解决无报错图片不显示问题)
  10. 玩转 Java 动态编译,太秀了~!
  11. How to add libraries to “External Libraries” in WebStorm/PhpStorm/Intellij
  12. 第3章 数据库操作SQL语言---数据库原理及应用
  13. STM8S103FP6芯片PB_4/PB_5输出问题
  14. 【Go】blockchain-tutorial 区块链技术教程
  15. 2014年9月至2015年1月
  16. 如何防止SP利用欠费进行套利
  17. 基于POA搭建ETH联盟链
  18. win10安装,ERROR:0x8007025D问题解决
  19. obsidian和zotero联动
  20. SRT协议的校园局域网电视直播应用(校园电视台)

热门文章

  1. 如何在idea中使用翻译
  2. 华为云耀云hecs安装docker
  3. 机器翻译--词语对齐
  4. 网络安全专业应该从事哪个方向前景比较好
  5. matlab绘图函数:举例说明surf、mesh、pcolor联系和区别
  6. 初中计算机表格处理教案,初中信息技术《初识电子表格》教案
  7. 如何看待OPP给应届生开出40W+的offer?
  8. 腾讯传奇霸业 服务器维护时间表,传奇霸业
  9. touchEnd 不执行解决办法
  10. java计算机毕业设计高校医务管理系统源程序+mysql+系统+lw文档+远程调试