SendMessage与PostMessage
来源:互联网 发布:apache 用户认证 编辑:程序博客网 时间:2024/06/08 09:06
SendMessage函数将指定的消息发送到一个或多个窗口,消息会直接发送到窗口过程而不经过消息队列,且直到消息处理完成后,SendMessage才返回。函数返回值指定消息处理的结果,依赖于所发送的消息。函数原型:
LRESULT WINAPI SendMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); <span style="font-size:14px;"> </span>
hWnd:接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。
Msg:要发送的消息。
wParam:消息的附加信息。
IParam:消息的附加信息
有穿过消息队列的消息才能被虚函数PreTranslateMessage()截获,故采用SendMessage()或其他类似的方式向窗口直接发送的而不经过消息队列的消息不会被PreTranslateMessage()截获。
PostMessage函数将一个消息放入(寄送)到与指定窗口创建的线程相关联的消息队列里,不等待线程处理消息就立刻返回。函数执行成功返回非0,否则返回0。函数参数意义与SendMessage相同。
BOOL WINAPI PostMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
从以上两个函数的功能可以看出SendMessage与PostMessage最大的区别有两点:1、SendMessage发送的消息不会进队而PostMessage发送的消息会进队。2、SendMessage属于阻塞函数,PostMessage属于非阻塞函数。3、如果需要等消息处理完后才进入下一流程则使用SendMessage(),如果想要发送消息后程序继续执行下一条语句则使用PostMessage()。
PostThreadMessage函数用来向线程发送消息,对于线程消息,MSG结构体中hwnd成员应为NULL。
参考:http://baike.baidu.com/link?url=BDv2_a-uBVOVe1jzJ1kZ7Q4SYoI5qP1Eq4JBqA60luNQT5a1urd1H2GihkvMU2PWLLzZ8UnRub3XsCriNaWuEq
http://baike.baidu.com/link?url=COaT6VDTfb0OmuACYswtZtYL8UoAa1z55fS4WZIfRBq9c4Enn3BeXv2IS9zoQEvLqD_fQMeT8_Sxxqyj6WGW0a
- SendMessage 与Postmessage区别
- PostMessage与SendMessage
- sendmessage 与 postmessage
- PostMessage与SendMessage
- SendMessage与PostMessage
- PostMessage 与SendMessage
- SendMessage与PostMessage
- MFC SendMessage与PostMessage
- SendMessage 与Postmessage区别
- SendMessage与PostMessage
- 【MFC】SendMessage与PostMessage
- SendMessage与PostMessage的区别?
- PostMessage 与 SendMessage 函数对比
- postmessage 与sendmessage的区别
- PostMessage与SendMessage的区别
- sendmessage与postmessage的区别
- SendMessage与PostMessage的区别
- postmessage与sendmessage的区别
- linux内存管理各文件简介
- hades的设计
- C语言指针学习笔记:指向结构体的指针
- iOS开发里的Bundle是个啥玩意?!
- Ldap活动目录属性(转)
- SendMessage与PostMessage
- 假如密码可以轻易破解,这个社会是否已做好准备?
- 找回win8开始菜单,不用任何工具
- 轻量级synchronized
- 系统调用 mlock
- cleancache
- 【深入浅出Objective-C】7.2单例和深拷贝
- 系统调用-mprotect
- 一些牛人榜样,多看看他们写的东西