请教各位:
MSG msg; 
PostThreadMessage(WM_SPEAKERDEVICE_VOICEOUT, m_eVoiceFormat, 0); 触发函数
消息映射定义如:ON_THREAD_MESSAGE(WM_SPEAKERDEVICE_VOICE, OnVoiceOutput)目前的结果为 如果PostThreadMessage连续多次发出消息,OnVoiceOutput 处理到的总是最后一次的文本输出,然后重复多次。
期望结果为   如果PostThreadMessage 发送了连续的几个消息 OnVoiceOutput只处理最后一个。线程类为:class CSpeakerThread : public CWinThread如果查找消息队列,并进行清空?谢谢。

解决方案 »

  1.   

    这个有点囧,既然这样为什么要连续多次发送消息~
    这个应该是由发送方来控制的,而不是让接收方丢弃
    建议加入一些应答机制
      

  2.   

    暂时没有应答机制。确实是该这样做,但是目前有什么方法来处理吗?
      

  3.   

    对于接收方来说,只能每次都处理
    它哪知道你是不是最后一次,你没有给出任何标识
      

  4.   

    或者说,等待几秒种,确认没有新消息来,再进行处理
      

  5.   

    添加消息计数器。丢掉一些等待的消息直接处理最后达到的消息。
    没有优先级概念和消息必须实时有效 只能抛弃掉一些了。