`
happmaoo
  • 浏览: 4472587 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

针对PostMessage和SendMessage区别的一个试验

阅读更多

作者:朱金灿
来源:http://blog.csdn.net/clever101/


最近看《Win 32多线程程序设计》,书中提到了PostMessage和SendMessage的区别。PostMessage是一个异步行为,就是先把消息扔到对方的消息队列,然后沿着原调用点继续执行;SendMessage是一个同步行为,就是等待对方把这个消息处理完再回到调用点继续执行。


我想怎么测试这个结论呢?为此我设计了一个小试验:在视图中弹出一个非模式的帮助对话框,然后分别用PostMessage和SendMessage给这个对话框发消息,消息处理函数很简单,就是在视图上打印字符串。



试验结果是使用SendMessage给对话框发送消息,先是依次输出5个"字符串来自对话框窗口",再依次输出5个"字符串来自视图窗口"。而使用PostMessage给对话框发送消息,结果相反,先依次输出5个"字符串来自视图窗口",再依次输出5个"字符串来自对话框窗口"。



分享到:
评论

相关推荐

    PostMessage和SendMessage的区别

    在探讨《PostMessage和SendMessage的区别》这一主题时,我们深入分析了两种消息发送机制的特点、应用场景以及它们在多线程环境中的行为差异。通过详细解释PostMessage与SendMessage的工作原理,我们可以更好地理解这...

    SendMessage与PostMessage区别

    在Windows编程中, SendMessage 和 PostMessage 是两个非常重要的API函数,它们都用于进程间或线程间的通信,向目标窗口发送消息。然而,两者的工作机制和应用场景有所不同。 **SendMessage** 函数是同步的,它会将...

    在C#中SendMessage和PostMessage的参数传递

    在C#中SendMessage和PostMessage的参数传递 在C#中可以使用Window API提供的SendMessage和PostMessage来传递参数。两者的区别简单介绍下:返回值的不同,我们先看一下 MSDN 里的声明: LRESULT SendMessage( HWND ...

    c# 线程通信PostMessage SendMessage PeekMessage

    `PostMessage`函数用于向指定窗口发送一个消息,但不会立即等待其处理,而是将消息放入窗口的消息队列并立即返回。这种方式是非阻塞的,允许调用线程继续执行其他任务。在多线程环境中,`PostMessage`常用于在不...

    MFC程序通过SendMessage或PostMessage实现进程间通信,实现很简单

    4. **发送消息**: 使用`SendMessage`或`PostMessage`函数,根据需要向另一个进程的窗口句柄发送消息。消息通常包括消息ID和额外的参数。 5. **处理消息**: 接收进程需要在消息循环中处理接收到的消息。在MFC中,这...

    MFC Sendmessage和Postmessage的使用

    1.下面我要实现的功能: 1.VS2010 基于对话框的操作;...4.父窗口上有一个按钮用于弹出子窗口,子窗口也有一个按钮用来触发事件; 5.子窗口的按钮触发事件后,发送消息给父窗口,然后在处理函数中写你想要的功能。

    PostMessage SendMessage

    在Windows API中,`PostMessage`和`SendMessage`是两个重要的消息处理函数,它们用于线程间或线程内的通信,向目标窗口发送消息。这两个函数在编程中扮演着关键角色,尤其在处理用户界面(UI)更新和异步操作时。让...

    SendMessage PostMessage 消息处理详解

    总的来说,朱建强先生的"SendMessage PostMessage 消息处理详解"是一个深入理解Windows消息机制的好资源,无论是对Delphi开发者还是其他Windows编程人员,都能从中受益。通过学习和实践,你可以更好地掌握如何在你的...

    在C# API 消息处理 SendMessage PostMessage 进程通信 发消息 实例 文档资料

    主要示例在C#中的SendMessage,PostMessage,包含两个示例,一个资料文档,希望受用。 在C#中 API 消息处理 SendMessage PostMessage 进程通信 发消息 实例 文档资料

    MFC通过SendMessage或PostMessage实现两个进程通信功能,实现很简单

    资源包含两个源程序,里面是借用MFC的消息通信实现简单的两个进程间通信,嗯主要是通过SendMessage或PostMessage,功能实现简单便捷。该资源是我想搞点分数,分多的大佬麻烦赏赐点,没分的可以找找我另一个同样的...

    通过PostMessage,SendMessage将CString发送和发布到Windows

    SendMessage将CString发送和发布到Windows”指的是在Microsoft的Windows操作系统环境中,使用C++编程语言,特别是MFC(Microsoft Foundation Classes)框架时,如何利用`PostMessage`和`SendMessage`这两个API函数来...

    PostMessage 后台模拟按键 MOUSE VC原码

    `PostMessage`函数就是这样的一个工具,它允许程序在目标窗口的message queue中放置一个消息,而不是立即处理它。这个功能在自动化测试、游戏外挂、远程控制软件等领域有广泛应用。在VC++(Microsoft Visual C++)...

    PostMessage

    PostMessage函数是Windows API中的一个核心消息处理函数,它允许应用程序在消息队列中放置一个消息,供其他线程或窗口处理。这个函数是进程间通信(IPC)和线程间通信的重要工具,广泛用于GUI(图形用户界面)程序的...

    进程间用postMessage发消息 ,在实际开发中的实例,

    通过`window.postMessage`方法,一个窗口可以向任何其他窗口发送消息,无论它们是否属于同一个源。接收端需要监听`message`事件来接收到的消息。这个API在Web应用程序中,特别是单页应用(SPA)和跨窗口通信时非常...

    API :GetScrollBarInfo GetScrollInfo SetScrollInfo PostMessage SendMessage 的实例

    API :GetScrollBarInfo GetScrollInfo SetScrollInfo PostMessage SendMessage 的实例 忙得很没有整理,自用备忘!嫌文件乱就不要下啦,我自己用的,如果要下的,直接看form2里面的api类!

    VC中SendMessage和PostMessage的区别

    在VC++编程中,了解和正确使用`SendMessage`和`PostMessage`是非常关键的,它们都是Windows API中用于进程间通信的重要函数,用于向窗口发送消息。这两个函数虽然功能相似,但在实现方式和使用场景上有着显著的区别...

    postMessage详解和demo

    - **iframe通信**:当一个页面包含了一个来自不同源的iframe时,`postMessage`可以用来在主页面和iframe之间交换数据。 - **窗口通信**:打开的新窗口或弹窗可以通过`postMessage`向父窗口或者兄弟窗口发送消息。 - ...

    QT 中使用 Windows API----SendMessage() 进行窗体间消息传递

    `SendMessage()`函数是Windows API提供的一种窗口消息发送方式,它允许一个线程向另一个线程的窗口发送消息。本文将详细讲解如何在QT中使用`SendMessage()`函数进行窗体间的消息传递。 首先,`SendMessage()`函数的...

    VC自定义消息响应函数postmessage用法示例

    `PostMessage` 和 `SendMessage` 都是Windows API中用于发送消息的函数,但它们的工作方式有所不同,尤其在异步和同步处理上有所区别。在VC++(Visual C++)环境中,我们经常需要自定义消息来实现特定功能。下面将...

    VC 中posemessage与sendmessage的区别

    消息处理是Windows编程的基础,理解PostMessage和SendMessage之间的区别以及如何正确使用它们对于编写高效的VC++应用程序至关重要。合理选择消息发送方式可以避免不必要的阻塞,提高程序的响应性和效率。在设计多...

Global site tag (gtag.js) - Google Analytics