MFC中SendMessage()使用方式
时间: 2024-09-15 08:09:52 浏览: 51
在MFC中,`SendMessage()`函数是一种常用的方式来在一个窗口向另一个窗口或同一线程内的窗口发送消息。其基本使用方式如下:
1. **声明消息 ID**: 首先,你需要为你要发送的消息创建一个唯一的标识符,通常在`.h`头文件中定义并注册到应用程序的消息映射表中。
```cpp
afx_msg void OnMyCustomMessage();
```
这里的`OnMyCustomMessage`是响应函数名,ID则是通过宏`WM_APP + n`生成,例如`WM_MY_CUSTOM_MESSAGE = WM_APP + 101`。
2. **发送消息**:
- 在发送者窗口中,使用`SendMessage()`函数,指定接收窗口的句柄、消息ID以及可能的附加数据(如整数、字符串等)。
```cpp
CWnd* pTargetWindow = GetDlgItem(IDC_TARGET_CONTROL); // 获取目标窗口句柄
int data = 42;
pTargetWindow->SendMessage(WM_MY_CUSTOM_MESSAGE, (WPARAM)data, LPARAM(0)); // 发送消息
```
3. **接收消息**:
- 在接收窗口的响应函数`OnMyCustomMessage`中,你可以从消息的参数中提取数据。
```cpp
void CYourWindow::OnMyCustomMessage(WPARAM wParam, LPARAM lParam)
{
int receivedData = (int)wParam; // 提取接收到的数据
// ... 对数据进行处理
}
```
**相关问题--:**
1. SendMessage()能否用于跨进程通信?如果是,需要怎么做?
2. SendMessage()是否有返回值?如果有,如何获取?
3. 如何防止恶意窗口滥用SendMessage()功能?
阅读全文