一、需求

MFC程序可能有许多个对话框,有主对话框,有子对话框,本文介绍父子对话框之间的消息传递。适用于外部事件、外部通知等事件。为简单起见,只针对父窗口传递消息到子窗口。

二、界面

主界面为对话框,上有一Button,点击进入子对话框(使用非模态方式)。对话框界面有Static控件输出信息。过程省略。

三、原理

自定义消息ID。在子窗口中响应该消息,事件发起者使用SendMessage函数发送消息。发送时可以指定子窗口句柄。

四、编码

定义消息ID,必须大于WM_USER,为方便起见,可在stdafx.h中定义:

#define WM_MY_EVENT (WM_USER + 1086)

在子对话框头文件声明消息响应函数:

afx_msg LRESULT OnMyEvent(WPARAM wParam, LPARAM lParam);

在子对话框实现文件,添加消息与响应函数的关联:

BEGIN_MESSAGE_MAP(CDlgChild, CDialogEx)// ...ON_MESSAGE(WM_MY_EVENT, OnMyEvent)
END_MESSAGE_MAP()

同一文件,实现响应函数:

// 父窗口发来的消息,进行响应
LRESULT CDlgChild::OnMyEvent(WPARAM wParam, LPARAM lParam)
{int* type = (int*)wParam;if (*type == 1){GetDlgItem(IDC_STC_SET_TIPS)->SetWindowTextW(L"消息类型1");m_nWaitReconnect = 1;}else if (*type == 2){GetDlgItem(IDC_STC_SET_TIPS)->SetWindowTextW(L"消息类型2");}return 0;
}

在其主界面实现代码中发送消息:

int sendtype = 2;
HWND hWnd = m_pDlgChild->GetSafeHwnd(); // 指定子窗口
::SendMessage(hWnd, WM_MY_EVENT, (WPARAM)&sendtype, NULL);

本文只是简单使用,复杂场合暂未有使用。

MFC小笔记:父子窗口传递消息相关推荐

  1. MFC小笔记:TabCtrl父子窗口传递消息

    一.需求 MFC界面有一个设置对话框,实际使用TabCtrl+子对话框的形式.在子对话框中设置参数时,需要将结果反馈至父窗口下方.这样统一信息输出.本文解决问题:如何在子窗口中,获取父窗口句柄,并在父 ...

  2. 我的HEVC码流分析工具MFC小笔记:树形控件使用及窗口缩放

    大约1个半月前,发布了自己写的HEVC码流分析工具.当时的版本显示语法元素使用是的Edit控件.很多主流分析工具都使用树形控件,看上去觉得比较高端,于是在纠结一天后下定决心自己也实现树形的HEVC语法 ...

  3. 初学Windows编程笔记1——窗口和消息

    Windows程序设计(第五版) 第三章 窗口与消息 源程序见原书39页 在Visual Studio 2010 C++下测试 //------------------Start----------- ...

  4. MFC小笔记:控件随窗口变化

    一.需求 当窗口大小变化时,如最大化.最小化时,控件位置和大小并没有变化,本文实现此功能. 二.界面 主界面为对话框,有最小化.最大化.关闭等功能. 三.原理 当窗口变化时,响应 OnSize 函数, ...

  5. 我的YUV播放器MFC小笔记:设置picture控件背景为黑色、窗口缩放

    图像的显示主要使用picture控件,一般播放器,在初始化时,播放画面的区域背景都是黑色的,在YUV播放器,也如此.但在网上找了很久的资料才实现该功能,其实说白了,代码很简单,在OnPaint函数中将 ...

  6. 我的YUV播放器MFC小笔记:非模态对话框建立及窗口间传值

    YUV播放器中,显示界面(主窗口)和设置界面分离,所有参数均在Setting子窗口设置,故需要主窗口和子窗口中实现参数传递.下面是方法. 1. 在主窗口CYUVPlayerDlg类中定义子窗口变量: ...

  7. MFC学习笔记--底层窗口

    底层窗口 基本说明 概念 过程 简单实例 文化建设 基本说明 windows应用程序是c语言实现的,所有windows函数都在windows.h中声明 概念 SDK:software developm ...

  8. MFC小笔记:系统托盘实现

    一.需求 本文实现程序系统托盘. 二.界面 主界面为对话框,有最小化.最大化.关闭等功能. 三.原理 利用系统托盘类NOTIFYICONDATA,响应自定义消息,处理托盘鼠标事件. 四.编码 4.1 ...

  9. 我的YUV播放器MFC小笔记:unicode编码、宽字符

    以前的MFC工程,字符集都是基于多字节的,而现在这个工程,无意间使用unicode字符集,在其过程中,有诸多函数使用不同于以前.当然,建立项目后也是可以在项目属性中修改字符集的.这篇文章记录一下关 ...

最新文章

  1. Flink再度霸榜,还不上车?
  2. Angularjs 中的 controller
  3. string.Split(params char[])”最匹配的重载方法具有一些无效参数
  4. 使用Infinispan作为持久性解决方案
  5. Android Studio 日志工具
  6. python爬虫反爬机制_Python Scrapy突破反爬虫机制(项目实践)
  7. MySQL日期时间函数大全
  8. CSDN写博客添加代码两种方法
  9. 【cs231】损失函数与优化
  10. 西门子S7-200PLC基本入门编程
  11. 69、【backtrader期货策略】十大经典策略之Dual Thrust策略(2021-10-28更新)
  12. 转载--柯尔莫哥洛夫
  13. w7电脑蓝屏怎么解决_电脑突然蓝屏,教您电脑突然蓝屏怎么解决
  14. IOS和安卓展示时间兼容问题
  15. Android8.0 NotificationChannel修改铃声和振动的坑
  16. 如何解决mac拔掉耗电量太大的设备以重新启用usb设备
  17. 数据库常见问题:服务器'SQL SERVER'上的 MSDTC 不可用
  18. eclipse中的javaEE插件
  19. Jetson Nano 按键切换摄像头
  20. 马里兰大计算机专业学phd博士,亚利桑那州立大学计算机CS博士PHD全奖录取

热门文章

  1. 是父母讲给小孩子听的,但是成人世界更需要这些启示。
  2. 一个在线让你的网站多语言化的工具
  3. 雷军卸任小米电子董事长!常程等人也退出该公司 网友:为造车放弃家业?
  4. 造芯片这事情,到底要不要找潘金莲算账?
  5. 国家网信办:掌握超过100万用户个人信息运营者赴国外上市需申报审查
  6. 被低估的“败家爷们”
  7. 华为Mate 40 Pro屏幕贴膜曝光:双孔曲面屏实锤?
  8. 转转、e代驾发布联合报告:代驾司机买二手手机看重验机、质保
  9. 苹果推送watchOS 5.3.2更新:用户无需升级至iOS13也可使用
  10. 全国首个!北京手机一卡通开卡费今起取消