另类理解SendMessage和PostMessage

class procedure TFWaitForm.Execute(const AMsg: string);
begin
01.  with TFWaitForm.Create(Application) do
  begin
02    aniMain.Active := true;
03    PostMessage(Handle, WM_CLOSE, 0, 0);
04    Msg := AMsg;
05    Show;
06    SendMessage(Handle, WM_KEYDOWN, 13, 0);
07    Refresh;
  end;
end;

另类解释下这段代码

有一次,银行内部正在忙着执行某个上级下达的命令(01.程序开始执行),取钱窗口是关闭的,有个老百姓来取钱(03.PostMessage发送过来的WM_CLOSE消息),就自觉地排队等待着。慢慢地等待着。后来来了一个当官的有钱人(06.SendMessage发送过来的WM_KEYDOWN消息),银行看到来了贵宾,马上叫到,来来来,我马上帮你办理,这样当官的就插到第一个,银行开窗帮他办理后,当官的走了,然后,对着老百姓说,你们继承等着,还没有忙完。等到全部忙完(07程序执行完毕...如果只是个子过程,还要等父过程执行完毕),然后再给老百姓一个个的办理。
这就是为什么SendMessage可以马上拿到结果,而PostMessage不能拿到及时的结果的原因。

呵呵!
原文地址:https://www.cnblogs.com/DKSoft/p/511539.html