MFC给父窗口发送消息
时间: 2024-04-10 16:27:26 浏览: 166
MFC编程基础3 windows程序
要在 MFC 中给父窗口发送消息,可以使用以下步骤:
1. 在父窗口的头文件(.h)中定义自定义消息常量,例如:
```cpp
const UINT WM_CUSTOM_MESSAGE = WM_USER + 1;
```
2. 在父窗口类的头文件(.h)中声明一个函数,用于处理接收到的消息,例如:
```cpp
afx_msg LRESULT OnCustomMessage(WPARAM wParam, LPARAM lParam);
```
3. 在父窗口类的源文件(.cpp)中添加以下代码来实现消息处理函数:
```cpp
BEGIN_MESSAGE_MAP(CParentWnd, CWnd)
ON_MESSAGE(WM_CUSTOM_MESSAGE, OnCustomMessage)
END_MESSAGE_MAP()
LRESULT CParentWnd::OnCustomMessage(WPARAM wParam, LPARAM lParam)
{
// 处理接收到的消息
// wParam 和 lParam 是附加的参数,可以根据需要进行使用
return 0;
}
```
4. 在子窗口类中,通过指向父窗口的指针或者通过 `GetParent()` 函数获取父窗口的句柄,并使用 `SendMessage()` 函数发送消息,例如:
```cpp
// 获取父窗口句柄
HWND hParentWnd = GetParent()->GetSafeHwnd();
// 发送消息给父窗口
::SendMessage(hParentWnd, WM_CUSTOM_MESSAGE, WPARAM_VALUE, LPARAM_VALUE);
```
在子窗口发送消息后,父窗口的消息处理函数 `OnCustomMessage()` 将会被调用,从而处理接收到的消息。
注意:确保自定义消息的数值范围在 WM_USER 和 WM_APP 之间,避免与系统预留的消息冲突。另外,使用 `GetSafeHwnd()` 来获取父窗口句柄,以确保在父窗口不存在时不会引发错误。
阅读全文