【100分】工作线程如何发消息给控制台主线程接收?

KaKaKaKa 2012-05-21 10:36:57

#include "stdio.h"
#include "windows.h"



HANDLE hThread; //工作线程句柄
MSG msg = {0}; //用于消息循环中接收消息


//处理工作的线程

DWORD WINAPI WorkThreadProc(LPVOID lpParameter )
{
//下面处理工作
//。。。
printf("线程处理完工作了!\n");

//ok,这里工作处理完毕,要求自动退出控制台程序
//安全起见,发送消息让主线程接收再处理比较好,不在这里直接exit

PostMessage(NULL,WM_CLOSE,0,0); //这里不知道能不能这样发送消息给主线程

return 1;
}


int main(int argc, char *argv[])
{
hThread = CreateThread(NULL,0,WorkThreadProc,NULL,0,NULL);
CloseHandle(hThread);

//自行在消息循环中获取线程完成工作请求退出Console的消息
while (GetMessage(&msg, NULL, 0, 0))
{
if(WM_CLOSE == msg.message)
{
printf("收到消息了!");
getchar();
return 0;
}
else
{
//这里对于其他消息 应该不需要处理吧,else可以不写的吧?
}
}

getchar();
return 0;
}

...全文
113 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
KaKaKaKa 2012-05-21
  • 打赏
  • 举报
回复
恩 用PostThreadMessage是对的

不过这里似乎要发送个自定义消息吧 我原先代码中是发送到WM_CLOSE消息,貌似不好的吧?
aCracker 2012-05-21
  • 打赏
  • 举报
回复
发送消息啊,检测全局变量啊 什么的.
ouyh12345 2012-05-21
  • 打赏
  • 举报
回复
PostThreadMessage

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧