sendmessage在多线程中的应用

   2024-10-07 7760
核心提示:SendMessage函数是 Windows API 中的一个函数,用于向指定的窗口发送一个消息。在多线程中,如果需要向其他线程发送消息,可以使

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函数向指定窗口发送消息。在主线程中的消息循环中处理接收到的消息,并在消息处理函数中处理收到的消息。通过这种方式,可以实现多线程间的消息传递和通信。

 
举报打赏
 
更多>同类维修大全
推荐图文
推荐维修大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号