MFC中使用SendMessage、PostMessage、PostThreadMessage

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

先看MSDN中解释:

BOOL PostThreadMessage(
   UINT message ,
   WPARAM wParam,
   LPARAM lParam 
);
Called to post a user-defined message to another CWinThread object
使用这个函数可以向一个CwinThread类型的类发送消息(即包括从CWindThrea中继承而来的类),使用方法如下:
CWinThread *pUIThread = AfxBeginThread(RUNTIME_CLASS(CProgress));//CProgress是从CWindThead中继承而来的类
CProgress *pUIThrd = (CProgress *)(pView->pUIThread);             //pView是一个视类的实例,pUIThread是它的一个成员
pUIThrd->PostThreadMessage(WM_PROS,NULL,NULL);                    //向CProgress类发送WM_PROS消息,由该类中对应的消息响应函数进行处理
 
  
  
MFC消息映射机制+SendMessagePostMessage区别(非常详细) mfc消息响应机制和sendmessagepostmessage区别 阅读详情

相关推荐

MFC中在两个对话框中用PostMessageSendMessage传输数据

不过有一个需要注意的点是,我们在主对话框中给子对话框发送消息的时候用的是m_dlgTest.SendMessage(WM_USER + 1, (WPARAM)&str, 0);之后在子对话框中按下按钮发送消息事件的时候用m_pdlg指针调用sendmessage或者postmessage函数就可以了,因为现在m_pdlg指针指向的是发送对象主对话框。其中在主对话框中点击OpenDlg按钮可以打开子对话框,只要两个对话框有读取数据的编辑框和发送消息框就满足示例的条件。

qq_52703741的博客 1727

c++用MFC编写的计算器小程序

代码如下: // MFCApplication2Dlg.cpp: 实现文件 // #include "pch.h" #include "framework.h" #include "MFCApplication2.h" #include "MFCApplication2Dlg.h" #include "afxdialogex.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // 用于应用程序“关于”菜单项的 CAboutDlg 对话框 class CAb

程序猿的博客 1112

深入掌握MFC框架:Windows桌面开发核心技术与现代集成实战

Windows桌面应用开发的核心在于理解其底层消息机制与图形界面架构。文档/视图模型通过分离数据管理与显示逻辑,实现了数据一致性维护与多视图同步,这是许多桌面框架的设计基础。消息映射机制将系统消息转化为面向对象的事件处理,提升了代码组织性。在工业控制、金融交易等对性能与系统集成度要求高的领域,掌握原生框架能实现更精细的资源控制与更低的延迟。通过集成GDI+、Direct2D等现代图形技术,以及嵌入CEF等Web引擎,传统桌面应用也能获得现代化的视觉效果与交互能力。本文以MFC为例,深入剖析其架构设计、线程安

weixin_33696822的博客 678

MFC简单使用PostMessage

在看MFC代码中总是会出现PostMessage这个函数,当按下F12的时候又会出现一个宏定义,在按就不知道去哪了。一直摸不到头脑,今天看到一篇博客写了相关的知识,也只是介绍了一下。 C++进程间通信之SendMessagePostMessage_Simple Simple的博客-CSDN博客_postmessage进程间通信 我写了个demo用一下这个函数,代码很简单,就是按下button然后edit编辑框加一个数。主要是使用这个函数用法。 使用思路,第一就是先定义一个宏定义: 这个宏定义的格式

m0_38036750的博客 5986

MFCSendMessage用法

Cwnd::SendMessage函数将直接调用窗口过程,并且在该窗口处理该消息之前,不会返回。 这与PostMessage成员函数不同,后者将消息放入窗口的消息队列,并立即返回。 函数声明: LRESULT SendMessage(UINT message, WPARAM wParam = 0,LPARAM lParam = 0); 具体的用法: void CAboutDlg::On...

sinat_31608641的博客 7564

MFC线程间发送消息

MFC线程消息分为几类: 1.线程消息: 2.窗口消息:传递消息用到 SendMessage(),PostMessage(),PostThreadMessage ()三个函数,详细请参看: http://blog.csdn.net/HolaMirai/article/details/46346091具体代码请到下面地址下载: http://download.csdn.net/detail/ho

HolaMirai的专栏 3977

MFC关于自定义消息(线程给主窗口发消息)(主窗口给线程发消息)实例

前言 老听公司的老哥们说MFC基于消息机制什么的巴拉巴拉一大堆,实际上自己并没有真真用过,每次看讲解什么的也是一知半懂,像我这种半路出家的,不遇到实际问题根本就搞不懂.由于目前做到公司的项目,按照需求,需要用到消息机制,索性就一次搞个明白 我理解的信号就是当线程或主线程执行完某一步,需要把当前执行的结果反馈给主线程或线程,这时候通过一个消息符号(自定义),该消息符号约定了具体做什么(接收到该信...

她的吻让他 6384

SendMessageSendMessageTimeout、PostMessagePostThreadMessage

  SendMessage函数将指定的消息发送到一个或多个窗口,消息会直接发送到窗口过程而不经过消息队列,且直到消息处理完成后,SendMessage才返回。函数返回值指定消息处理的结果,依赖于所发送的消息。函数原型:   LRESULT WINAPI SendMessage( HWND hWnd, UINT Msg, WPARAM wPara...

milanleon的专栏 2129

sendmessagepostmessage的区别

1、POSTMESSAGE(非阻塞)与SENDMESSAGE(阻塞) 区别1:返回时间不同 PostMessage发送消息后就立即返回 SendMessage发送消息后,等待消息处理函数处理完后才返回。 区别2:返回值不同 从函数定义上来看,PostMessage的返回值是BOOL, 意思是返回非0值,消息执行成功,返回0,执行不成功。 SendMessage的返回值是LRESULT

qq2669573897的专栏 4961

MFC发送消息函数PostMessage(异步)和SendMessage(同步)的异同

PostMessage只把消息放入队列,不管其他程序是否处理都返回,然后继续执行,这是个异步消息投放函数。而SendMessage必须等待其他程序处理消息完了之后才返回,继续执行,这是个同步消息投放函数。而且,PostMessage的返回值表示PostMessage函数执行是否正确;而SendMessage的返回值表示其他程序处理消息后的返回值。 简言之:PostMessage只负责将消息放到消

luojingwu的专栏 4376

mfc中,遇到了PostThreadMessage,发现还有PostAppMessage

mfc中,遇到了PostThreadMessage,发现还有PostAppMessage。回忆一下还有SendMessage ,postmessage等方法,先记录后面研究区分一下技术细节。

thanklife的专栏 1263

sendmessagepostmessage

PostMessage只负责将消息放到消息队列中,不确定何时及是否处理 SendMessage要等到受到消息处理的返回码(DWord类型)后才继续 PostMessage执行后马上返回 SendMessage必须等到消息被处理后才会返回。 1、sendmessagepostmessage的区别两个函数的声明如下:    LRESULTSendMessage( HWND hWnd, UINT

a100501102的专栏 646

MFC工作笔记0009---VC++中 PostMessageSendMessage的区别

技术交流QQ群【JAVA,C++,Python,.NET,BigData,AI】:170933152 最近利用vc编写UDP通讯程序,对其中的消息机制进行了整理。vc中的消息处理与.net中不同。Net中都给我们封装好了,采用代理的方式可以进行操作。而在vc中,要自己写消息响应函数。 1, PostMessage只把消息放入队列,不管其他程序是否处理都返回,然后继续执行,这是个异步消息投放函数。而SendMessage必须等待其他程序处理消息完了之后才返回,继续执行,这是个同步消息投放函数。而且,..

添柴程序猿的专栏 723

MFC发送自定义消息-PostMessageSendMessage

PostMessage:把消息投放到线程的消息队列,不能消息被处理就立即返回SendMessage:消息被处理完后才返回 几种发送消息的写法: ::PostMessage(GetSafeHwnd(), WM_USER_THREADEND, 0, 0); //GetSafeHwnd()表示得到当前窗口句柄,所以这条语句是发送给当前窗口 GetParent()->PostMessage...

weixin_34007879的博客 97

MFC 基础

windows桌面应用分为两种类型: 基于文档视图类型 和 基于对话框类型。通常具有复杂交互控件的程序即为基于对话框类型,相对而言比较复杂,而基于文档视图类的应用交互形式比较单一,相对简单。

yuanshenqiang的博客 792

WM_CLOSE、WM_DESTROY、WM_QUIT及各种消息投递函数详解

本文对WM_CLOSE、WM_DESTROY、WM_QUIT及各种消息投递函数的功能及区别做出了分析比对,有助于读者更好的对消息投递函数加以理解。详情如下: 一、WM_CLOSE、WM_DESTROY、WM_QUIT区别 WM_CLOSE:关闭应用程序窗口 WM_DESTROY:关闭应用程序 WM_QUIT:关闭消息循环 只有关闭了消息循环,应用程序的进程才真正退出(在任务管理器里消失)。 win32应用程序的完整退出过程:点击窗口右上角的关闭按钮,发送WM_CLOSE消息。此消息处理中调用De

积累点滴,保持自我 1872

MFC进队消息和不进队消息

进队消息基本上是用户的输入:击键的消息(WM_KEYDOWN、WM_KEYUP)键盘输入产生字符(WM_CHAR)、鼠标移动(WM_MOUSEMOVE)、鼠标键(WM_LBUTTONDOWN)、计时消息(WM_TIMER)、刷新消息(WM_PAINT)和退出消息(WM_QUIT)不进队消息是指由Windows直接调用消息处理函数,把消息直接交给其处理。而进队消息是指Windows将消息放入到程序中...

booming163的博客 649

MFC中从一个类向其他类发送消息的方法

假设准备从A类向B类发送一个消息WM_MSG 首先:在B类中定义这个用户自定义消息,消息响应函数,并关联消息和消息响应函数 然后:在A类头文件中包含B类的头文件,并定义一个B类类型的指针成员变量,假设为*memB; 之后就可以使用memB->PostMessage()或者PostThreadMessage()或者SendMessage()向B类发送消息即可

WangIcter的专栏 1635

VC++消息映射机制深度解析:从Windows消息泵到MFC实战避坑指南

消息驱动架构是Windows GUI编程的核心基础,其原理基于操作系统生成消息、应用程序通过消息泵循环获取并分派消息到窗口过程。这一机制构成了所有Windows桌面应用的运行基石,其技术价值在于实现用户输入与程序逻辑的解耦,支撑了响应式交互体验。在MFC框架中,消息映射表通过静态数据结构将消息ID与处理函数关联,替代了原始的switch-case处理方式,大幅提升了开发效率。然而,在维护遗留系统或进行混合开发时,开发者常面临消息路由失效、线程安全等工程挑战。本文聚焦VC++消息映射,深入剖析CWnd::Wi

weixin_30512089的博客 365
上一篇: MFC类继承层次图
下一篇: MFC中从一个类向其他类发送消息的方法
gukesdo
博客等级 码龄16年 245粉丝 231原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值