Message相关函数对比

 SendMessagePostMessage
 过程类型同步过程:等待其他程序处理消息完了之后才返回,继续执行异步过程:只把消息放入队列,不管其他程序是否处理都返回,然后继续执行
返回值表示其他程序处理消息后的返回值表示PostMessage函数执行是否正确
 同一线程中时系统直接调用目标窗口的消息处理程序,并将结果返回(比较主动);发送消息并不入线程消息队列消息要先放入线程的消息队列,然后通过消息循环Dispatch到目标窗口
不同线程内

发送消息到目标窗口所属的线程的消息队列,然后发送消息的线程等待(事实上,他应该还在做一些监测工作,

比如监视QS_SENDMESSAGE标志),直到目标窗口处理完并且结果返回,发送消息的线程才继续运行(这是一般情况)

最好用PostThreadMessage(该函数可以指明放到哪个线程里)代替PostMessage(默认在当前线程)

参考链接:PostMessage(异步)和SendMessage(同步)的区别

 GetMessagePeekMessage
过程类型同步过程:只有在消息队列中有消息时返回,队列中无消息就会一直等,直至下

一个消息出现时才返回。在等的这段时间,应用程序不能执行任何指令

异步过程:无论应用程序消息队列是否有消息,PeekMessage函数都立即返回,程序得以继续执行

后面的语句(无消息则执行其它指令,有消息时一般要将消息派发出去,再执行其它指令)。

删除消息获得消息后回把消息从消息队列中删去可以设置是否将消息删除

 在Windows的内部,GetMessage和PeekMessage执行着相同的代码(查看应用程序消息队列,有消息时将队列中的消息派发出去)。而两者最大的不同之处则体现在没有任何消息返回到应用程序的情况下。在此种情况下,PeekMessage会返回一个空值到应用程序,GetMessage会在此时让应用程序休眠。

总结:

GET就是不GET到不罢休
PEEK只是看看有没有消息,有就拿,没有就走人
SEND是要一直等到对方收到了才放心
POST只是把消息放在邮筒里就不管走人了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodingLife99

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值