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


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

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

 

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);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM