• 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 是发送消息。


  • 相关阅读:
    模型绑定
    Asp.Net MVC基础
    Entity Framework 6.x介绍
    IE内核发送ajax请求时不会将url中的参数编码
    .NET使用OpenSSL生成的pem密钥文件[1024位]
    简单测试nginx1.90做TCP协议负载均衡的功能
    《图解TCP/IP》读书笔记
    使用wireshark抓包分析浏览器无法建立WebSocket连接的问题(server为Alchemy WebSockets组件)
    wireshark常用的过滤器设置
    通过监控线程状态来保证socket服务器的稳定运行
  • 原文地址:https://www.cnblogs.com/actionke/p/4192628.html
Copyright © 2020-2023  润新知