windows提供了消息机制,在写多线程代码时可以用windows消息进行通信,比如线程A, B在执行时,可以相互发送消息,实现多线程通信。
自定义消息,必须大于 WM_USER, 例如定义一个TH_MSG消息:
#define TH_MSG WM_USER+30
通过PostThreadMessage发送,GetMessage接收。下面简单的说明这两个函数
一 PostThreadMessage 体发送一个消息到指定线程ID的线程,函数声明如下:BOOL
WINAPI
PostThreadMessageW(
_In_ DWORD idThread,
_In_ UINT Msg,
_In_ WPARAM wParam,
_In_ LPARAM lParam);
参数1: 线程ID
参数2:消息
参数3:指定附加的消息特定信息
参数4:指定附加的消息特定信息
这个函数既可以发送消息给工作线程,也可以发送给UI线程。接受PostThreadMessage的线程必须已经有了一个message queue,否则调用PostThreadMessage会失败。因为此原因使用GetLastError会得到错误码为1444,这种情况经常出现,解决方法有如下两种:
(1)调用PostT