一、需求
MFC程序可能有许多个对话框,有主对话框,有子对话框,本文介绍父子对话框之间的消息传递。适用于外部事件、外部通知等事件。为简单起见,只针对父窗口传递消息到子窗口。
二、界面
主界面为对话框,上有一Button,点击进入子对话框(使用非模态方式)。对话框界面有Static控件输出信息。过程省略。
三、原理
自定义消息ID。在子窗口中响应该消息,事件发起者使用SendMessage
函数发送消息。发送时可以指定子窗口句柄。
四、编码
定义消息ID,必须大于WM_USER,为方便起见,可在stdafx.h中定义:
1 | #define WM_MY_EVENT (WM_USER + 1086) |
在子对话框头文件声明消息响应函数:
1 | afx_msg LRESULT OnMyEvent(WPARAM wParam, LPARAM lParam); |
在子对话框实现文件,添加消息与响应函数的关联:
1 | BEGIN_MESSAGE_MAP(CDlgChild, CDialogEx) |
同一文件,实现响应函数:
1 | // 父窗口发来的消息,进行响应 |
在其主界面实现代码中发送消息:
1 | int sendtype = 2; |
本文只是简单使用,复杂场合暂未有使用。