下面写的代码,每次使用postthreadmessage后,都没有成功传递消息,会输出error,不知道有什么错误。#define WM_BEGIN   (WM_USER+100)
DWORD WINAPI ThreadFunc(LPVOID);
int main()
{
  HANDLE hThrd;
  DWORD threadId;
           int post;

 hThrd=CreateThread(NULL,
  0,
  ThreadFunc,
  (LPVOID)1,
  0,
  &threadId);
 if(hThrd)
 {
     printf("Thread launched 1\n");
          }     post=PostThreadMessage(threadId,WM_BEGIN,0,0);
    if (post==0)
    {
         printf("error\n");
     } Sleep(2000);
  return EXIT_SUCCESS;     
    }DWORD WINAPI ThreadFunc(LPVOID n)
{
MSG msg;
while(1)
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if(msg.message==WM_BEGIN)
printf("BEGIN\n");
break;
}
return 0;
}

解决方案 »

  1.   

    应该不是while(1)吧,循环体内只有一条if语句
      

  2.   

    不好意思,我看错了,,原因是,你在postthreadmessage的时候,线程的消息队列还没有创建!
      

  3.   

    你需要等待线程的消息队列创建后,才postthreadmessage...使用线程同步你可以很简单的在postthreadmessage前面Sleep(2000)看看就知道原因了
      

  4.   

    感谢屠夫,已经ok了。还想请教一个问题,我如果在两个工作线程中传递消息,如何知道threadID