sendmessage在多线程中的应用

avatar
作者
筋斗云
阅读量:5

SendMessage函数是 Windows API 中的一个函数,用于向指定的窗口发送一个消息。在多线程中,如果需要向其他线程发送消息,可以使用SendMessage函数来实现线程间通信。

以下是SendMessage函数在多线程中的应用示例:

#include <Windows.h> #include <iostream> #include <thread>  void workerThread(HWND hwnd) {     // 向指定窗口发送消息     SendMessage(hwnd, WM_USER, 0, 0); }  void messageHandler(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {     if (message == WM_USER) {         std::cout << "Received WM_USER message" << std::endl;     } }  int main() {     // 创建窗口并获取窗口句柄     HWND hwnd = CreateWindowEx(0, L"STATIC", L"Window", WS_OVERLAPPEDWINDOW,                                CW_USEDEFAULT, CW_USEDEFAULT, 200, 100,                                NULL, NULL, NULL, NULL);      // 创建工作线程     std::thread t(workerThread, hwnd);      // 消息循环     MSG msg;     while (GetMessage(&msg, NULL, 0, 0)) {         TranslateMessage(&msg);         DispatchMessage(&msg);     }      // 等待工作线程结束     t.join();      return 0; } 

在上面的示例中,主线程通过创建窗口并获取窗口句柄,然后启动一个工作线程,在工作线程中调用SendMessage函数向指定窗口发送消息。在主线程中的消息循环中处理接收到的消息,并在消息处理函数中处理收到的消息。通过这种方式,可以实现多线程间的消息传递和通信。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!