zoukankan      html  css  js  c++  java
  • 另类理解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不能拿到及时的结果的原因。

    呵呵!
  • 相关阅读:
    清单
    1
    s
    模块系统的演进
    改radio样式
    前端css库
    疑惑
    收藏
    事件
    社保档案
  • 原文地址:https://www.cnblogs.com/DKSoft/p/511539.html
Copyright © 2011-2022 走看看