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
函數向指定窗口發送消息。在主線程中的消息循環中處理接收到的消息,并在消息處理函數中處理收到的消息。通過這種方式,可以實現多線程間的消息傳遞和通信。