线程消息问题,请帮帮忙~~

sixibb 2005-10-24 05:57:45
////////创建线程
unsigned long DrawThread;
DrawThread = _beginthreadex(NULL,0,DrawThreadFunc,0,0,&threadId);
////////另一个线程给这个线程发消息
BOOL bTrue;
bTrue = ::PostThreadMessage((DWORD)DrawThread,WM_THREAD_START,0,0);
/////////这个线程中消息循环
::PeekMessage((LPMSG)&msg,NULL,NULL,NULL,PM_REMOVE);
switch(msg)
{
case WM_THREAD_START:
AfxMessageBox("11");
break;
}
/////////////////////

先不说别的,为什么我发线程消息一直失败呢?我看了,线程ID是OK的,可怎么就一直发送失败呢?
帮帮我,谢谢了
...全文
139 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sixibb 2005-10-25
  • 打赏
  • 举报
回复
解决了,实在是晕,哈哈
截取的MSG是结构体啊,定义的有问题哦,这样就OK啦~~~

MSG msg;
while(1)
{
::PeekMessage((LPMSG)&msg,NULL,NULL,NULL,PM_REMOVE);
switch(msg.message)
{
case WM_THREAD_START:
AfxMessageBox("11");
break;
}
}
gohappy_1999 2005-10-25
  • 打赏
  • 举报
回复
mark
sixibb 2005-10-25
  • 打赏
  • 举报
回复
谢谢楼上的,是线程ID,呵呵
////////////////////////

::PeekMessage((LPMSG)&msg,NULL,NULL,NULL,PM_REMOVE);
switch(msg)
{
case WM_THREAD_START:
AfxMessageBox("11");
break;
}
意想中的问题发生了,我跟了一下,全部都是3435973836..........为什么没我发的消息啊?
lianglp 2005-10-24
  • 打赏
  • 举报
回复
PostThreadMessage((DWORD)DrawThread,WM_THREAD_START,0,0);
--------------------------------------------------------------
1.DrawThread改为线程ID而不是线程句柄。
2.目标线程是否有消息队列已创建。
flyelf 2005-10-24
  • 打赏
  • 举报
回复
bTrue = ::PostThreadMessage((DWORD)DrawThread,WM_THREAD_START,0,0);
-----------------
===>threadId
sixibb 2005-10-24
  • 打赏
  • 举报
回复
关于线程消息循环的好象很少有资料,刚才在网上找了一下,MSDN上也没有源码......我把解释看了一下,再修修改改也没有什么进展,反正就是发送失败了,MS说如果返回为非0(发送失败)只有一个原因,就是线程ID有问题...郁闷了.....我跟过的,有值的...........
Researcher 2005-10-24
  • 打赏
  • 举报
回复
Mark关注!

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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