我有这样一个帖子:
DWORD WINAPI message_loop_thread(LPVOID dummy) {
MSG message;
while (GetMessage(&message, NULL, 0, 0)) {
TranslateMessage(&message);
DispatchMessage(&message);
}
}
我用CreateThread
:
DWORD thread_id;
CreateThread(0, 0, message_loop_thread, 0, 0, &thread_id);
这似乎有效,但我怎样才能正确关闭这个帖子?通常情况下,线程正在等待GetMessage
,因此线程被阻塞了。
这样做有好办法吗?我试过了TerminateThread
,但是这个问题很突然,我认为停止这个问题不是一个好方法。
有人有想法吗?
最好的问候 Benj Meier答案 0 :(得分:3)
正确的方法是将WM_QUIT
发布到thread_id
。您可以使用PostThreadMessage()
。作为响应,GetMessage
返回0,while
循环退出,函数退出(错误地,您错过了return
语句)。当线程的顶层函数退出时,线程结束。