MFC小笔记:父子窗口传递消息
一、需求
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小笔记:父子窗口传递消息相关推荐
- MFC小笔记:TabCtrl父子窗口传递消息
一.需求 MFC界面有一个设置对话框,实际使用TabCtrl+子对话框的形式.在子对话框中设置参数时,需要将结果反馈至父窗口下方.这样统一信息输出.本文解决问题:如何在子窗口中,获取父窗口句柄,并在父 ...
- 我的HEVC码流分析工具MFC小笔记:树形控件使用及窗口缩放
大约1个半月前,发布了自己写的HEVC码流分析工具.当时的版本显示语法元素使用是的Edit控件.很多主流分析工具都使用树形控件,看上去觉得比较高端,于是在纠结一天后下定决心自己也实现树形的HEVC语法 ...
- 初学Windows编程笔记1——窗口和消息
Windows程序设计(第五版) 第三章 窗口与消息 源程序见原书39页 在Visual Studio 2010 C++下测试 //------------------Start----------- ...
- MFC小笔记:控件随窗口变化
一.需求 当窗口大小变化时,如最大化.最小化时,控件位置和大小并没有变化,本文实现此功能. 二.界面 主界面为对话框,有最小化.最大化.关闭等功能. 三.原理 当窗口变化时,响应 OnSize 函数, ...
- 我的YUV播放器MFC小笔记:设置picture控件背景为黑色、窗口缩放
图像的显示主要使用picture控件,一般播放器,在初始化时,播放画面的区域背景都是黑色的,在YUV播放器,也如此.但在网上找了很久的资料才实现该功能,其实说白了,代码很简单,在OnPaint函数中将 ...
- 我的YUV播放器MFC小笔记:非模态对话框建立及窗口间传值
YUV播放器中,显示界面(主窗口)和设置界面分离,所有参数均在Setting子窗口设置,故需要主窗口和子窗口中实现参数传递.下面是方法. 1. 在主窗口CYUVPlayerDlg类中定义子窗口变量: ...
- MFC学习笔记--底层窗口
底层窗口 基本说明 概念 过程 简单实例 文化建设 基本说明 windows应用程序是c语言实现的,所有windows函数都在windows.h中声明 概念 SDK:software developm ...
- MFC小笔记:系统托盘实现
一.需求 本文实现程序系统托盘. 二.界面 主界面为对话框,有最小化.最大化.关闭等功能. 三.原理 利用系统托盘类NOTIFYICONDATA,响应自定义消息,处理托盘鼠标事件. 四.编码 4.1 ...
- 我的YUV播放器MFC小笔记:unicode编码、宽字符
以前的MFC工程,字符集都是基于多字节的,而现在这个工程,无意间使用unicode字符集,在其过程中,有诸多函数使用不同于以前.当然,建立项目后也是可以在项目属性中修改字符集的.这篇文章记录一下关 ...
最新文章
- Flink再度霸榜,还不上车?
- Angularjs 中的 controller
- string.Split(params char[])”最匹配的重载方法具有一些无效参数
- 使用Infinispan作为持久性解决方案
- Android Studio 日志工具
- python爬虫反爬机制_Python Scrapy突破反爬虫机制(项目实践)
- MySQL日期时间函数大全
- CSDN写博客添加代码两种方法
- 【cs231】损失函数与优化
- 西门子S7-200PLC基本入门编程
- 69、【backtrader期货策略】十大经典策略之Dual Thrust策略(2021-10-28更新)
- 转载--柯尔莫哥洛夫
- w7电脑蓝屏怎么解决_电脑突然蓝屏,教您电脑突然蓝屏怎么解决
- IOS和安卓展示时间兼容问题
- Android8.0 NotificationChannel修改铃声和振动的坑
- 如何解决mac拔掉耗电量太大的设备以重新启用usb设备
- 数据库常见问题:服务器'SQL SERVER'上的 MSDTC 不可用
- eclipse中的javaEE插件
- Jetson Nano 按键切换摄像头
- 马里兰大计算机专业学phd博士,亚利桑那州立大学计算机CS博士PHD全奖录取