永发信息网

sendmessage和postmessage的区别

答案:6  悬赏:70  手机版
解决时间 2021-04-05 05:10
sendmessage和postmessage的区别
最佳答案
具体的参数情况就不为搂住列举了,相信楼主已经查过msdn.
说说区别
PostMessage只负责将消息放到消息队列中,不确定何时及是否处理
SendMessage要等到受到消息处理的返回码(DWord类型)后才继续
PostMessage执行后马上返回
SendMessage必须等到消息被处理后才会返回。
全部回答
SendMessage
开放分类: 编程、计算机、API
函数功能:该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。
函数原型:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);
参数:
hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。
Msg:指定被发送的消息。
wParam:指定附加的消息指定信息。
IParam:指定附加的消息指定信息。
返回值:返回值指定消息处理的结果,依赖于所发送的消息。
备注:需要用HWND_BROADCAST通信的应用程序应当使用函数RegisterWindowMessage来为应用程序间的通信取得一个唯一的消息。
如果指定的窗口是由调用线程创建的,则窗口程序立即作为子程序调用。如果指定的窗口是由不同线程创建的,则系统切换到该线程并调用恰当的窗口程序。线程间的消息只有在线程执行消息检索代码时才被处理。发送线程被阻塞直到接收线程处理完消息为止。
Windows CE:Windows CE不支持Windows桌面平台支持的所有消息。使用SendMesssge之前,要检查发送的消息是否被支持。
速查:Windows NT:3.1及以上版本:Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:winuser.h;输入库:user32.lib;Unicode:在Windows NT环境下以Unicode和ANSI方式实现。
PostMessage
开放分类: 编程、计算机、API
函数功能:该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回。消息队列里的消息通过调用GetMessage和PeekMessage取得。
函数原型:B00L PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
参数
hWnd:其窗口程序接收消息的窗口的句柄。可取有特定含义的两个值:
HWND.BROADCAST:消息被寄送到系统的所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口。消息不被寄送到子窗口。
NULL:此函数的操作和调用参数dwThread设置为当前线程的标识符PostThreadMessage函数一样。
Msg:指定被寄送的消息。
wParam:指定附加的消息特定的信息。
IParam:指定附加的消息特定的信息。
返回值:如果函数调用成功,返回非零值:如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。
备注:需要以 HWND_BROADCAST方式通信的应用程序应当用函数 RegisterwindwosMessage来获得应用程序间通信的独特的消息。
如果发送一个低于WM_USER范围的消息给异步消息函数(PostMessage.SendNotifyMessage,SendMesssgeCallback),消息参数不能包含指针。否则,操作将会失败。函数将再接收线程处理消息之前返回,发送者将在内存被使用之前释放。
速查:Windows NT: 3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:winuser.h;输入库:user32.lib;Unicode:在Windows NT环境下以Unicode和ANSI方式实现。
SendMessage,PostMessage:
前者同步,后者异步
其他没有区别。
SendMessage发送消息后会等对方处理完这个消息后才会继续
PostMessage则将消息发送出去后就会继续
所以注意,不要通过PostMessage传递临时变量指针,应该很可能消息被处理时该变量已经销毁,这时访问就会出错
用SendMessage就可以了,因为程序会停在SendMessage函数,直接消息被处理
SendMessage把消息放入消息队列,并要等待消息处理完才返回。
PostMessage可以理解为把消息扔进消息队列里,不管有没有处理就返回!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
单选题下列说法正确的是A.平移和旋转都不改变
冰心的名言读书,冰心名言名句大全
为什么我的体重明明增长了,而好多朋友都说我
有一通钱,看不清楚底二个字,大什么通宝,
宏碁推Jade Primo Win10手机怎么样
追女孩是不是越在乎她 她就越得寸进尺 越不在
请问耐克护臂都有洗标吗
长12.5米,高3.4米,宽2.1米。求立方
校园内哦于一方水塘,常见各种漂浮物。为了保
蝉蜕和怪诞读音有没有差别
买房时开发商没说没有地下车库,接房时没车库
广加郭念什么,广字头里面有一个郭念什么
Thegameisn'tgreat,butitmightprovi
索菲亚衣柜厂一个月多少钱
派派怎么删除好友,派派 个人资料电话怎么删
推荐资讯
如何评价《圣母》这部韩国电影?
刷机对手机有影响吗,rom刷机后会对手机有什么
泉州下半年还有事业单位编内考试吗?
瞄准用红外线好还是狙击镜好
英国物理学家牛顿曾经研究过这样一个问题:从
山水风景语句,描写大自然的好句
高等生物细胞中有一个称为nuc-1的基因,该基
杀毒软件杀不了毒怎么办呢?
电压5伏 电流1000毫安(1A)的mp3播放器用5伏
法国科学家最近发现了一种只由四个中子构成的
判断题800003读作八十万零三,8在十万位上,
《汤姆索亚历险记》里的哈克和《哈克费恩历险
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?