PostMessage只负责将消息放到消息队列中,不确定何时及是否处理,相当于异步操作,执行后马上返回
SendMessage要等到受到消息处理的返回码(DWord类型)后才继续,相当于同步操作,一直在等待,必须等到消息被处理后才会返回。
SendMessageTimeout 函数,是会有一个超时的操作,防止操作一直没返回,当前程序挂起,这个函数有几个参数:

LRESULT SendMessageTimeout(HWND hwnd,
UINT Msg,
WPARAM wParam,
LPARAM IParam,
UINT fuFlags,
UIUT uTimeout,
LPDWORD lpdwResultult);

  

Msg 为 HWND_BROADCAST,是发给所有的窗口。
   fuFlags;指定如何发送消息。此参数可为下列值的组合:
  SMTO_ABORTIFHUNG:如果接收进程处于“hung”状态,不等待超时周期结束就返回。
  SMTO_BLOCK:阻止调用线程处理其他任何请求,直到函数返回。
  SMTO_NORMAL:调用线程等待函数返回时,不被阻止处理其他请求。
  SMTO_NOTIMEOUTIFNOTHUNG:Windows 95及更高版本:如果接收线程没被挂起,当超时周期结束时不返回。
  uTimeout:为超时周期指定以毫秒为单位的持续时间。如果该消息是一个广播消息,每个窗口可使用全超时周期。例如,如果指定5秒的超时周期,有3个顶层窗回未能处理消息,可以有最多15秒的延迟。
  IpdwResult:指定消息处理的结果,依赖于所发送的消息。
  返回值:如果函数调用成功,返回非零值。如果函数调用失败,或超时,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。如果GetLastError返回零,表明函数超时。如果使用HWND_BROADCAST,SenddMessaggTimeout不提供单个窗口超时信息。
//for example
//发送端:

WM_CLOSE_AGENT_APP = ::RegisterWindowMessage(_T("CLOSE_AUDIO_DEV_AGENT_APP")); 
   PDWORD_PTR lpdwResultult = 0;
  ::SendMessageTimeout(HWND_BROADCAST, WM_CLOSE_AGENT_APP, 0, 0, SMTO_ABORTIFHUNG, 500, lpdwResultult);

//接收端:

//注册同一个窗口消息,然后监听注册的消息

WM_CLOSE_AGENT_APP = ::RegisterWindowMessage(_T("CLOSE_AUDIO_DEV_AGENT_APP"));

ON_REGISTERED_MESSAGE(WM_CLOSE_DEVAGENT_APP, &CILSysAudioDevAgentDlg::OnCloseAgentApp)

最新文章

  1. linux 查找文件的命令
  2. ios 防止按钮快速点击造成多次响应的避免方法。
  3. 错误修改/etc/fstab,导致系统无法开机
  4. lsof 一切皆文件
  5. 使用Spark分析拉勾网招聘信息(一):准备工作
  6. 简单使用Junit
  7. Service Oriented Architecture and WCF 【转】
  8. jsoup:解析HTML用法小结
  9. MongoDB3.4安装配置以及与Robomongo1.1的连接——解决Authentication Failed导致的不能连接问题
  10. iOS Button 上文字图片位置的设置
  11. MyEclipse报错
  12. windows linux—unix 跨平台通信集成控制系统----文件搜索
  13. 【Python实践-2】求一个或多个数的乘积
  14. git错集
  15. RESTful API浅谈
  16. day5_非空即真非零即真
  17. 20155326《网络攻防》Exp4 恶意代码分析
  18. 关于一台机器部署多个tomcat的小记
  19. 修改linux镜像
  20. sql server 小技巧(6) Cannot resolve the collation conflict between "Latin1_General_CI_AI" and "Chinese_PRC_CI_AS" in the equal to operation

热门文章

  1. 网络基础:OSI 七层模型、TCP/IP 四层模型
  2. SrpingMVC/SpringBoot中restful接口序列化json的时候使用Jackson将空字段,空字符串不传递给前端
  3. 读《软件需求最佳实践》YOUGAN
  4. 2020/2/2 PHP代码审计之反序列化
  5. CodeForces - 748D Santa Claus and a Palindrome (贪心+构造)
  6. vue element-ui Table数据解除自动响应方法
  7. python基础2--进制、字符编码和文件处理
  8. Spring Cloud Alibaba 教程 | 前世今生
  9. Img转base64
  10. Tensorflow基础笔记