Delphi WinAPI 消息函數 SendMessage函數和 PostMessage的區別

SendMessage函數 將指定的消息發到窗口。它調用特定窗口的窗口處理函數,而且不會當即返回,直到窗口處理函數處理了這個消息。函數

PostMessage函數 將一個消息放入與建立這個窗口的消息隊列相關的線程中,並馬上返回不等待線程處理消息。spa

 

SendMessage是發送消息,而後等待處理完成返回,但發送消息的方法爲直接調用消息處理函數(即WndProc函數),按照函數調用規則,確定會等消息處理函數返回以後,SendMessage才返回。而PostMessage卻沒有發送消息,PostMessage是將消息放入消息隊列中,而後馬上返回,至於消息什麼時候被處理,PostMessage徹底不知道,此時只有消息循環知道被PostMessage的消息什麼時候被處理了。線程

 

例句:隊列

向按鈕(Button)發送單擊:消息隊列

SendMessage:循環

  SendMessage(Button1.Handle, WM_LBUTTONDOWN, 0, 0);方法

  SendMessage(Button1.Handle, WM_LBUTTONUP, 0, 0);消息

PostMessage:

  PostMessage(Button1.Handle, WM_LBUTTONDOWN, 0, 0);
  PostMessage(Button1.Handle, WM_LBUTTONUP, 0, 0);

相關文章
相關標籤/搜索