如题?

解决方案 »

  1.   

    你可以添加响应消息的映射来处理PostMessage发出的消息啊
    不用GetMessage获取
      

  2.   

    在主线程里面循环调用GetMessage((&msg,hwnd,0,0)
      

  3.   

    可能被APP的getmessage取掉并删除
    你发送过 下面就放一个getmessage 应该可以取到
      

  4.   

    我在子线程里用:
       PostMessage(hWnd , WM_USER+1 , 0 , 0) ;  //其中hWnd有主线程的HWND。以后我在主线程,也就是窗体的某个事件中俘获:
       while(::GetMessage(&Msg , NULL , 0 ,0))
       {
           break ;      //一获得就退出(如果获取不到就一直等要该消息发生,该消息一获得
                        //就退出,接的往下执行,否则一直等)
       }
    谢谢大家!
      

  5.   

    那个while里面是你所有的语句吗?
    难道只有一句break?
    这样的话,你那个while和break根本就是多余的,GetMessage不是PeekMessage,只有取得消息了才会继续执行,否则就会等待,根本不需要while。
    如果这里的GetMessage取不到消息,只有两种可能:
    1、hWnd的这个窗口不是由主线程创建的,这样的话它的消息不存在于主线程的消息队列,可以试试PostThreadMessage。
    2、程序当时不处于此处的循环之中。另外这个设计很怪,如果主线程像这样处于某种假死状态的等待之中,然后由子线程唤醒的话,一般都是用WaitForSingleObject居多。