VC中SendMessage和PostMessage的区别
本文实例讲述了VC中SendMessage和PostMessage的区别。分享给大家供大家参考。具体分析如下:
1、首先是返回值意义的区别,我们先看一下 MSDN 里的声明:
UINT Msg,
WPARAM wParam,
LPARAM lParam );
UINT Msg,
WPARAM wParam,
LPARAM lParam);
其中 4 个参数的意义是一样的,返回值类型不同(其实从数据上看他们一样是一个 32 位的数,只是意义不一样),LRESULT 表示的是消息被处理后的返回值,BOOL 表示的是消息是不是 Post 成功。
2、PostMessage 是异步的,SendMessage 是同步的。
PostMessage 只把消息放入队列,不管消息是否被处理就返回,消息可能不被处理;而 SendMessage 等待消息被处理完了之后才返回,如果消息不被处理,发送消息的线程将一直被阻塞。
3、sendmessage发送消息不经过消息队列,会被直接处理。但是sendmessage一直等待,知道消息被处理才返回。
4、系统只整理和编号系统消息(0 到 WM_USER 之间的消息),发送用户消息(WM_USER 以上)到别的进程时,需要自己定义。
用 PostMessage、SendNotifyMessage、SendMessageCallback 等异步函数发送系统消息时,参数里不可以使用指针,因为发送者并不等待消息的处理就返回,接受者还没处理指针就已经被释放了。
5、在 Windows 2000/XP 里,每个消息队列最多只能存放 10,000 个 Post 的消息,超过的还没被处理的将不会被处理,直接丢掉。这个值可以改得更大:[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Windows] USERPostMessageLimit,最小可以是 4000。
希望本文所述对大家的VC程序设计有所帮助。
- JQuery Ajax 跨域访问的解决方案
- 在Ajax中使用Flash实现跨域数据读取的实现方法
- 跨域请求之jQuery的ajax jsonp的使用解惑
- 利用iframe实现ajax跨域通信的实现原理(图解)
- JQuery的Ajax跨域请求原理概述及实例
- 完美解决AJAX跨域问题
- 用iframe设置代理解决ajax跨域请求问题
- jquery的ajax和getJson跨域获取json数据的实现方法
- jquery跨域请求示例分享(jquery发送ajax请求)
- JavaScript使用HTML5的window.postMessage实现跨域通信例子
- ajax跨域请求js拒绝访问的解决方法
- IE9版本以下ajax 跨域问题可行解决方法
- VC自定义消息响应函数postmessage用法示例
- 使用HTML5中postMessage知识点解决Ajax中POST跨域问题
相关文章
C/C++ Qt TableDelegate 自定义代理组件使用详解
TableDelegate自定义代理组件的主要作用是对原有表格进行调整,本文主要介绍了QT中TableDelegate 自定义代理组件的使用教程,感兴趣的朋友可以了解一下2021-12-12VisualStudio2022不支持.NET Framework 4.0项目解决办法
本文主要介绍了VisualStudio2022不支持.NET Framework 4.0项目解决办法,文中通过图文的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-09-09
最新评论