• PeekMessage, GetMessage, PostMessage, SendMessage


    1.peekmessage,getmessage区别
    区别一:
    他们如果没有捕获到消息,程序的主线程会被操作系统挂起。当操作系统再次回来照顾此线程时,发现消息队列中仍然没有消息可取,此时两个函数的行为就 不同了:
    peekmessage不管消息队列里有没有消息都会马上返回,有消息返回消息,没消息返回空值,
    getmessage等待到有消息的时候才返回,
    区别二:
    peekmessage可以根据参数决定是否将消息保留在队列中,
    PM_NOREMOVE:该参数指示保留消息
    PM_REMOVE:该参数指示移去消息

    而getmessage获得消息后回把消息从消息队列中删去


    2.PostMessage 与 SendMessage 函数对比
    PostMessage函数只是向线程消息队列中添加消息,如果添加成功,则返回True,否则返回False,消息是否被处理,或处理的结果,就不知 道了。而SendMessage则有些不同,它并不是把消息加入到队列里,而是直接翻译消息和调用消息处理(线程向自己发送消息才是这样),直到消息处理 完成后才返回。所以,如果我们希望发送的消息立即被执行,就应该调用SendMessage。
      还有一点,就是SendMessage发送的消息由于不会被加入到消息队列中(错:线程向其他 线程发送消息也是追加到其他线程的发送消息队列的,即使这两个线程在同一个进程也是如此),所以通过PeekMessage或GetMessage是不能 获取到由SendMessage发送的消息。
      另外,有些消息用PostMessage不会成功,比如wm_settext。所以不是所有的 消息都能够用PostMessage的。

    3.  PeekMessage   与PostMessage   是异步函数,GetMessage与SendMessage   是同步函数 

    4.PeekMessage 与 GetMessage 是获取消息。SendMessage 与 PostMessage 是发送消息。


  • 相关阅读:
    Mbs Framework 简介
    回应老赵: 适合C# Actor的消息执行方式 中看也中用的解决方案
    Mini 容器学习笔记5—— 组件的获取
    JS控制文本框只能输入N个字符.
    【转】外挂编写原理
    【转】集合小节
    CSS样式的filter(滤镜效果)
    系统变量(%SystemRoot% ,%windir% ,%temp%,%system%)的表示方法
    客户端调用服务器控件
    Flash MX 认证考试(样题)
  • 原文地址:https://www.cnblogs.com/actionke/p/4192628.html
Copyright © 2020-2023  润新知