您可以使用PostMessage功能将消息发布到消息队列。PostMessage在线程的消息队列的末尾放置一条消息,并立即返回,而不等待线程处理消息。该函数的参数包括窗口句柄,消息标识符和两个消息参数。Windows将这些参数复制到MSG结构中,填写结构的时间和pt成员,并将结构放置在消息队列中。
Windows使用与PostMessage函数一起传递的窗口句柄来确定哪个线程消息队列应该接收消息。如果句柄是HWND_TOPMOST,Windows会将消息发布到所有顶级窗口的线程消息队列中。
您可以使用PostThreadMessage功能将消息发布到特定线程消息队列。PostThreadMessage与PostMessage类似,除了第一个参数是线程标识符而不是窗口句柄。您可以通过调用GetCurrentThreadId函数来检索线程标识符。
使用PostQuitMessage功能退出消息循环。PostQuitMessage将WM_QUIT消息发布到当前正在执行的线程。线程的消息循环终止并在Windows遇到WM_QUIT消息时将控制权返回给Windows。应用程序通常调用PostQuitMessage响应WM_DESTROY消息,如以下示例所示。
case WM_DESTROY:
//
//执行清理任务。
//
PostQuitMessage(0);
break;