SendMessage与PostMessage的区别【转】

本文通过类比邮寄员和邮局的工作方式,详细解释了Windows消息机制中SendMessage与PostMessage的区别。前者直接将消息发送到窗口过程并等待处理完成,而后者则是将消息放入消息队列中,由应用程序的消息循环来处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://www.cnblogs.com/McJeremy/archive/2009/09/28/1575741.html

      先来看看Send与Post这两个英文单词的意思:Send有发送的意思,而Post具有投寄的意思。
      联想一下现实生活中我们写信(很久很久以前。。。。)来记就很简单了:
      Send:  相当于邮寄员,他会将快件亲手交给收件人,并且需要收件人签字,他才闪人。而在消息机制中,就是说,系统(邮寄员)会将收到的消息(邮局分发)直接发送到 某个窗口的窗口过程(收件人),并且需要该窗口作出处理(收件人签字)才返回。 这东东就是SendMessage
      Post:  相当于邮局、邮筒等等,我们写好信好,会将信交给邮局,或投寄到邮筒里,而什么时候发送,发送到哪里都由邮局来处理,我们投寄信件的时候,是不会等候这封 信件到达收件人手里,然后才回家的。 而在消息机制中,就是说,系统(我们)将收到的消息(信件)投寄到应用程序的消息循环(相当于邮筒)中,然后就闪人,具体啥时候处理这条消息(啥时候发送 邮件),那就得看“办事效率”了。
      区别很明显,SendMessage的消息是不进队列的,而PostMessage的需要排队。 
      但,值得说明的是:虽然一个要进队,一个不进队,但是最终处理消息的地方都一样:都是系统调用窗口过程进行处理(收件人作出反应)
      
     类似的,还有一对函数 PeekMessage和GetMessage~~~~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值