解决方案 »

  1.   

    我在主线程中通过消息传递结构体变量,但是在Normal线程中无法获取消息;
    ::PostThreadMessage(ThreadID_Normal,MAINTONORMAL_MSG,(WPARAM) &MainData,0);
    单步调试无法获取结果,烦请高手给予指点
      

  2.   


    为什么你已经PeekMessage到了msg,你直接处理就可以了,还要再GetMessage?你能得到消息吗?
      

  3.   

    PeekMessage(&Mmsg,0,0,0,PM_REMOVE)
      

  4.   

    能的。但是有时候却没办法得到消息,需要连续发送几次,目的线程才能得到;
    你说的是一种情况,由于CPU时间片跳转的无序性,目的线程无法获知自己什么时候会提前得到消息,或者延迟得到消息,所以才会有后续的组成队列。
      

  5.   


    PEEKMessage只是确认队列中有无消息,如果有的话,还需要取出来消息,然后进行执行。因为消息不是直接在不同线程的消息队列中传递的,而是所有线程的消息都会发送到Windowsde的消息队列,然后各线程将属于自己的消息拿回到自己的消息队列中等待着自己线程的读取和使用。原理好像是这样的~~~~
      

  6.   

    线程消息是会丢的,正确做法是自己做消息队列
    WaitEvent;
    {
    lock(incoming_queue_lock_);
    incoming_queue_.Swap(&work_queue_);
    }
    do_work();