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)

转载于:https://www.cnblogs.com/132818Creator/p/11466195.html

MFC的sendmessage和postmessage 以及sendmessagetimeout相关推荐

  1. SendMessage 和 PostMessage

    Win32 API消息函数:SendMessage 函数功能:该函数将指定的消息发送到一个或多个窗口.此函数为指定的窗口调用窗口程序,直到窗口程 序处理完消息再返回.而函数PostMessage不同, ...

  2. SendMessage、PostMessage原理

    SendMessage.PostMessage原理 本文讲解SendMessage.PostMessage两个函数的实现原理,分为三个步骤进行讲解,分别适合初级.中级.高级程序员进行理解,三个步骤分别 ...

  3. SendMessage和PostMessage

    SendMessage 和 PostMessage 的区别 1.首先是返回值意义的区别,我们先看一下 MSDN 里的声明: LRESULT SendMessage(         HWND hWnd ...

  4. SendMessage、PostMessage原理和源代码详解

    本文讲解SendMessage.PostMessage两个函数的实现原理,分为三个步骤进行讲解,分别适合初级.中级.高级程序员进行理解,三个步骤分别为: 1.SendMessage.PostMessa ...

  5. Windows SendMessage和PostMessage区别(最简单的讲解)

    SendMessage和PostMessage共同点: 都是向其他进程或本进程传递消息,消息是Windows处理机制的灵魂,这个消息就不详解了,大家可以百度一下看一下,很重要在Windows开发当中. ...

  6. Windows API 函数SendMessage与PostMessage使用方法和常见的坑

    Windows API 函数中 SendMessage 与 PostMessage 用处很大,经常被程序员们使用.对老手们来说,了如知掌,但对新手来说,可能会遇到这样那样的问题.我作为一名老手中的新手 ...

  7. Window SendMessage,PostMessage分析

    Window SendMessage,PostMessage分析 背景 SendMessage 函数原型 PostMessage 函数原型 区别 问题解决 背景 前段时间程序中突然出现一个Bug,程序 ...

  8. MFC C++ 如何发送Postmessage

    MFC C++ 如何发送Postmessage 案例1 一.发起postmessage void CValidEdit::OnTimer(UINT_PTR timer){if (timer == TM ...

  9. SendMessage、PostMessage 2021-01-07

    本文讲解SendMessage.PostMessage两个函数的实现原理,分为三个步骤进行讲解,分别适合初级.中级.高级程序员进行理解,三个步骤分别为: 1.SendMessage.PostMessa ...

最新文章

  1. c文本框只能输入数字_VBA代码限制文本框的输入
  2. linux下shell显示-bash-4.1#不显示路径解决方法
  3. redis info memory
  4. 基于Lucene/XML的站内全文检索解决方案:WebLucene 【转】
  5. Windows消息拦截技术的应用
  6. ConcurrentHashMapK, V的实现
  7. Android 图片展示器
  8. U盘美化(更换U盘logo和页面背景软件)
  9. ESP32-cam 初体验 从esp32-cam的购买到局域网监控的实现
  10. centos 7下搭建wiki系统
  11. linux开启wifi热点命令,deepin Linux 开启wifi热点
  12. 小程序navigateTo失效
  13. 应用于高速计数器的编码器基础知识介绍
  14. 3.1 mocha使用allure报告
  15. DELL强化版《最终幻想11》认证电脑出炉
  16. poj 2187(旋转卡壳)
  17. 按键精灵电脑版对接百度ai,告别字库(文字识别篇)
  18. Android数据库高手秘籍(六)——LitePal的修改和删除操作
  19. mysql error unpacking_linux 安装 mysql rpm包出现error: unpacking of archive failed on file
  20. 【经典论文】ResNeXt

热门文章

  1. linux应用程序之----时间类编程
  2. 《剑指offer》题目说明
  3. IP3 三阶交调截取点测试(转帖)
  4. Valgrind 使用方法
  5. 【Transformer】Augmented Shortcuts for Vision Transformers
  6. Shady 深度学习课程
  7. power bi_如何将Power BI模型的尺寸减少90%!
  8. 聊聊 Java8 以后各个版本的新特性
  9. 买房应该少出首付,多贷款
  10. python调用sdk的文章_如何使用 python 接入虹软 ArcFace SDK