在我的感觉中Sendmessage与Postmessage的区别与模态对话框和非模态的区别相类似

解决方案 »

  1.   

    你说的有道理,SendMessage将消息发送后等待消息被处理完才返回.而PostMessage是发出消息后立即返回
      

  2.   

    另:SendMessage消息马上处理.而PostMessage消息先到消息对列中排队,到了(有空)才处理。
      

  3.   

    給你講個實例
    SendMessage(handle,WM_YOU,0,1);
    SendMessage(handle,WM_YOU,0,2);
    SendMessage(handle,WM_YOU,0,3);
    OnMessage(WPARAM wparam,LPARAM lparam)
    {
      printf("%d",(long)lparam);
    }
    結果一定是:
    123
    但如果把上面的Send改成Post的話,就不一定了
    可能是123,也可能是231,321,132,...
    也就是說Send出去的消息,系統會等著接受方收到後再運行一下步,
    而Post出去的消息會扔在消息區,誰要誰拿,,,不這先後
    所以你在使用它們的時候如果沒有特別要求某個函數一定要在事件函數前運行,就可以用Post,但如果你Post後的函數調用一定要在消息函數後運行的話,你就一定要用Send,否則可能你測不到BUG,實際應用中就出丑了
      

  4.   

    AplusMartin(Martin) 
    is right