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

相关文章
相关标签/搜索