sendmessagePostMessage和SendMessage有什么区别?

sendmessage  时间:2021-08-08  阅读:()

postmessage和sendmessage有什么区别?

它们的区别是: SendMessage( )直接把一个消息发送给窗口过程,等消息被处理后才返回。

PostMessage( )只是把消息发送到消息队列,然后立即返回。

PostMessage和SendMessage的区别

一、主体不同 1、SendMessage:将指定的消息发送到一个或多个窗口。

2、PostMessage:是Windows API(应用程序接口) 中的一个常用函数,用于将一条消息放入到消息队列中。

二、特点不同 1、SendMessage:为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。

2、PostMessage:将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回,是异步消息模式。

三、规则不同 1、SendMessage:指定要接收消息的窗口的句柄。

如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。

2、PostMessage:消息被寄送到系统的所有顶层窗口,包括无效或不可见的非自身拥有的窗口、 被覆盖的窗口和弹出式窗口。

消息不被寄送到子窗口。

参考资料来源:百度百科-SendMessage 参考资料来源:百度百科-PostMessage

sendmessage这个发送消息的函数如何发送字符串

首先说怎么发送,然后说怎么接收: 自己定义一个消息,加上一个消息响应函数。

然后用SendMessage把字符串的地址发过去。

比如VC环境: 在stdafx.h中, #define MY_MESSAGE USER+1 定义一个函数用来发送,可以是定时器,可以是按钮。

void send() { CString str; str = "12345"; ::SendMessage(hWnd,MY_MESSAGE ,(WPARAM)&str); } 在你的类头文件.h中: afx_msg void MyFunction(WPARAM wParam,LPARAM lParam); 在.cpp中 BEGIN_MESSAGE_MAP下面加入: ON_MESSAGE(MY_MESSAGE ,MyFunction) 在后面加上你的函数体 void 你的类名::MyFunction(WPARAM wParam,LPARAM lParam) { //如果你发送的字符串的地址在WPARAM中,则用WPARAM来接收 CString* pStr = (CString*)wParam. AfxMessageBox(*pStr); } 你要注意的是:这只能适合SendMessage,如果你要使用PostMessage,就要把你发送的字符串设定为类的成员,或者全局的,不能是临时变量。

因为SendMessage是要让消息响应函数执行完了才会返回,所以str是不会被系统释放的。

PostMessage是直接返回,于是你传了一个str的地址过去,但是消息响应函数执行的时候,str已经被删除了,这个时候的地址是一个不可知的内容,程序就会发生内存泄露,所以还是推荐你定义一个字符串专门用来发送。

PostMessage和SendMessage有什么区别?

在控制别的应用程序的时候,经常需要等待直到某个功能结束,例如: 打开一个窗口-->等待直到窗口结束 这个时候就可以用到SendMessage 如果在打开这个窗口后仍然需要对该窗口的界面进行设置,比如Edit的value等等,比如: 打开一个窗口-->控制窗口的control的属性 这个时候就需要PostMessage使用一个钩子程序截获消息后,使用SendMessage把消息发送到主处理程序进行处理,但是在主处理程序还没有完成任务的时候,被设置钩子的程序进入了停止的状态,不可以处理WM_PAINT, WM_MOVE, .......等的基本信息, 必须要等SendMessage发送出的消息完成后,才能继续运行,整个界面一片空白,把钩子消息设置成PostMessage的发送消息形式后,问题解决! 我查了MSDN对这两个API的定义, PostMessage只是把消息放入队列,不管其他程序是否处理都返回,然后继续执行; 而SendMessage必须等待其他程序处理消息后才返回,继续执行。

PostMessage的返回值表示PostMessage函数执行是否正确; 而SendMessage的返回值表示其他程序处理消息后的返回值。

使用这两个发送消息函数的最重要的是要看你的程序是否要对消息的滞后性关注否,PostMessage会造成消息的滞后性,而SendMessage则不会,但如果SendMessage消息处理失败,则会造成程序停止!

捷锐数据399/年、60元/季 ,香港CN2云服务器 4H4G10M

捷锐数据官网商家介绍捷锐数据怎么样?捷锐数据好不好?捷锐数据是成立于2018年一家国人IDC商家,早期其主营虚拟主机CDN,现在主要有香港云服、国内物理机、腾讯轻量云代理、阿里轻量云代理,自营香港为CN2+BGP线路,采用KVM虚拟化而且单IP提供10G流量清洗并且免费配备天机盾可达到屏蔽UDP以及无视CC效果。这次捷锐数据给大家带来的活动是香港云促销,总共放量40台点击进入捷锐数据官网优惠活动内...

弘速云20.8元/月 ,香港云服务器 2核 1g 10M

弘速云元旦活动本公司所销售的弹性云服务器、虚拟专用服务器(VPS)、虚拟主机等涉及网站接入服务的云产品由具备相关资质的第三方合作服务商提供官方网站:https://www.hosuyun.com公司名:弘速科技有限公司香港沙田直营机房采用CTGNET高速回国线路弹性款8折起优惠码:hosu1-1 测试ip:69.165.77.50​地区CPU内存硬盘带宽价格购买地址香港沙田2-8核1-16G20-...

hostkvm:美国VPS,三网强制CU-VIP线路,$5/月,1G内存/1核/15gSSD/500g流量

hostkvm在2021年3月新上线洛杉矶新VPS业务,强制三网接入中国联通优化线路,是当前中美之间性价比最高、最火热的线路之一,性价比高、速度非常好,接近联通AS9929和电信AS4809的效果,带宽充裕,晚高峰也不爆炸。 官方网站:https://hostkvm.com 全场优惠码:2021(全场通用八折,终身码,长期) 美国 US-Plan0【三网联通优化线路】 内存:1G CPU:...

sendmessage为你推荐
密码设置电脑怎么设置密码mapsource怎么用mapsource制作地球化学航迹图蓝牙开发开发者选项里的蓝牙设置如何设置最好?武汉教育云平台武汉天喻教育科技有限公司怎么样?传奇私服教程传奇私服怎么开服教程传奇私服教程怎样开传奇SF?我要具体详细的步骤wifi快速破解器电脑版电脑怎么破解wifi密码程序员段子20、老婆给当程序员的老公打电话:“下班顺路买一斤包子带回来,如果看到卖西瓜的,买一个。”当晚,程序文件系统格式系统盘用什么格式好没有nvidia控制面板电脑没有nvidia显卡控制面板是怎么回事
国际域名抢注 godaddy域名解析教程 申请免费域名 80vps edis 韩国加速器 mediafire下载工具 密码泄露 win8.1企业版升级win10 云主机51web tk域名 一点优惠网 bgp双线 tna官网 免费美国空间 hkt 网游服务器 drupal安装 空间购买 atom处理器 更多