写一段代码看看
时间: 2023-07-10 09:26:09 浏览: 78
一个代码例子
好的,以下是一个简单的接收WM_COPYDATA消息的代码示例:
```c++
#include <Windows.h>
#include <iostream>
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
int main() {
// 注册窗口类
WNDCLASS wc = { 0 };
wc.lpfnWndProc = WindowProc;
wc.hInstance = GetModuleHandle(NULL);
wc.lpszClassName = TEXT("MyWindowClass");
RegisterClass(&wc);
// 创建窗口
HWND hwnd = CreateWindowEx(
0,
TEXT("MyWindowClass"),
TEXT("My Window"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
640, 480,
NULL,
NULL,
GetModuleHandle(NULL),
NULL
);
// 显示窗口
ShowWindow(hwnd, SW_SHOW);
// 消息循环
MSG msg = { 0 };
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
switch (uMsg) {
case WM_COPYDATA: {
// 接收WM_COPYDATA消息
PCOPYDATASTRUCT pcds = (PCOPYDATASTRUCT)lParam;
if (pcds->dwData == 1) {
std::cout << "Received data: " << (char*)pcds->lpData << std::endl;
}
break;
}
case WM_DESTROY: {
// 关闭窗口
PostQuitMessage(0);
break;
}
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
}
```
这段代码中,我们创建了一个窗口并注册了窗口类。在窗口过程函数中,我们通过判断消息类型是否为WM_COPYDATA来接收消息,并将消息内容打印到控制台上。在消息循环中,我们使用GetMessage函数来获取消息并交给窗口过程函数处理。当收到WM_DESTROY消息时,我们使用PostQuitMessage函数关闭窗口并退出程序。
阅读全文