MFC自定义消息

MFC中自定义消息 【转】MFC中用户自定义类响应自定义消息   2009-08-13 17:15:11|  分类: MFC学习 |  标签: |字号大中小 订阅 这篇技术文章不是讨论经典的MFC中的消息工作机理的,讨论消息工作原理、方式和路径的文章在网上和书本中 随处可见。网上众多 阅读详情

本文地址:http://blog.163.com/strive_only/blog/static/893801682010101911467765/

消息机制是windows的典型运行机制,在MFC中有很多的消息如WM_BTN**等。但是在有些情况下我们需要自定义一些消息去做一些我们需要的功能,MFC的向导不能帮助我们做到这一点,我们可以通过添加相应的代码去完成这个功能。

添加自定义消息操作如下:
1. 建立MFC工程,如基于对话框的应用程序,Test。
2. 在资源中添加要处理的消息的值,即在CTestDlg.h中添加 如下代码。 (因为很多MFC的消息是在WM_USER内的,所以这里用比WM_USER大的消息)

 #define WM_MyMessage (WM_USER+100)
3. 声明消息处理函数,在CTestDlg.h中添加代码
class CTestDlg : public CDialog
{
 
protected:
  ……
   // 生成的消息映射函数
    ……
    afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam); // add lyw
    DECLARE_MESSAGE_MAP()
    ……
4. 添加消息映射处理,在CTestDlg.cpp中人找到如下部分添加代码
 BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
     
……
    ON_MESSAGE
(WM_MyMessage, OnMyMessage)
END_MESSAGE_MAP()
 5. 实现自己的自定义消息处理
 LRESULT CTestDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
    //MessageBox("recv msg success");
    //添加自己的消息处理
    
……
    return 0;    
}
6. 如果要发送一个自定义的消息,使用代码
 SendMessage( WM_MyMessage, 0, 0);
或者
 PostMessage(WM_MyMessage, 0, 0); 
如果要定义系统唯一的消息让多个应用程序去处理,不同之处如下
1. 把上面2步骤中的宏 #define WM_MyMessage (WM_USER+100) 使用   如下代替
 static UINT WM_MyMessage = RegisterWindowMessage("myMessage");
2. 上面4步骤中的代码用如下代替
 BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
     
……
    ON_REGISTERED_MESSAGE(WM_MyMessage, OnMyMessage)

END_MESSAGE_MAP()
3.测试消息时,如果要让多个应用程序都接收到这个消息,使用
 ::SendMessage(HWND_BROADCAST, WM_MyMessage, 0, 0);

MFC中使用自定义消息   消息映射、循环机制是Windows程序运行的基本方式。VC++ MFC 中有许多现成的消息句柄,可当我们需要完成其它的任务,需要自定义消息,就遇到了一些困难。在MFC ClassWizard中不允许添加用户自定义消息,所以我们必须在程序中添加相应代码,以便可以象处理其它消息一样处理自定义消息。通常的做法是采取以下步骤:  第一步:定义消息。  推荐用户自定义消息至少是WM_USER+100,因 阅读详情

相关推荐

MFC自定义消息:实现MFC子窗口向父窗口发送消息的功能

在MFC中,使用用户自定义消息,子窗口向父窗口发送消息过程、代码: 在需要接收消息的父窗口头文件(xxx.h)中增加定义,也可以在其他头文件中定义,但是要记得引入 //自定义DMTIDRegDlg到主窗口的消息 #define WM_MYMSG WM_USER+2 在父窗口的头文件(xxx.h)文件中,声明消息的处理函数: //自定义消息的处理函数声明 protected: afx_msg LRESULT InsPackMessage(WPARAM wParam, LPARAM lParam

weixin_40721097的博客 2157

MFC开发,自定义消息

基于MFC消息机制实现自定义消息

LWD的博客 1399

MFC 在自定义类中向MFC窗口发送消息

在MSGDlg.h或者其他头文件中增加自定义自定义消息:#define WM_COUNT_MSG WM_USER+100 在MSGDlg.h头文件中添加消息处理函数的声明 afx_msg LRESULT OnCountMsg(WPARAM,LPARAM); 在CMSGDlg类实现文件MSGDlg.cpp中的消息映射表中加入自定义消息映射: BEGIN_MESSAGE_MAP(CMSGDlg, CDialog) ON_WM_PAINT() ON_MESSAGE(WM_CO..

wqc的博客 1285

MFC 自定义消息

MFC 自定义消息四步曲1. 定义全局变量或宏#define WM_MyMessage (WM_USER + n) n为数字到少大于100或者用 const UINT WM_MYMESSAGE = WM_USER + n一般可以加在stdafx.h 或resource.h 或*.app.h中。他们都是全局变量头文件所以都可以.2. 在所在类的*.H文件增加消息函

djf_1985的专栏 1254

MFC实现自定义消息(附完整源码)

MFC实现自定义消息(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 805

MFC 自定义消息实现

参看http://blog.youkuaiyun.com/wangshiqilin_fjy/article/details/14458843

MFC模拟消息发送,自定义以及系统消息

在有些时候系统定义的消息不能完全满足程序的应用,这时候就需要进行消息自定义了,那么该如何实现自定义消息呢?在MFC框架下,分配了WM_USER之后的消息都是开发人员可以自定义的消息ID。,消息ID号是:WM_USER+1如果要是你的程序中只存在了一两个自定义消息,就没有必要写成上面的格式了。这种格式的好处:可以根据功能划分自定义消息区域。假设你目前正在开发一个仅供公司内部使用的基础框架类,在自定义消息的时候,需要区分哪些是自己开发使用的,哪些是对外开发者调用的。分工明确,不容易消息错乱。

糯诺诺米团 1785

Qt 5.12.8在Linux下编译qtvirtualkeyboard模块,我踩过的那些坑(附完整解决方案)

本文详细介绍了在Linux系统下为Qt 5.12.8单独编译qtvirtualkeyboard模块的完整解决方案。通过分析模块缺失原因、提供精准的编译步骤和常见问题处理,帮助开发者高效解决虚拟键盘模块缺失问题,避免重新编译整个Qt源码的繁琐过程。

weixin_29248611的博客 461

MFC中用户自定义类响应自定义消息

所以,又一个重要的结论,在自定义类能够处理任何消息之前一定要确保m_hWnd关联到一个窗体,即便这个窗体是不可见的。那么有人说,在自定义类的构造函数中调用Create函数就行了,不错,当然也可以在别处调用,只要确保在消息发送之前。但是,Create的调用很有说法,要注意两个地方,第一个参数是类的名称,我建议最好设为NULL;第五个参数是父窗体对象的指针,这个函数指定的对象一定要存在,我建议最好为整个程序的主窗体。还有很多人问第六个参数的意义,这个参数关系不大,是子窗体ID,用于传给父窗体记录以便识别。

csdndenglu的专栏 897

域控制器迁移后NETLOGON共享丢失的修复指南

本文详细解析了在Windows域控制器迁移后NETLOGON共享丢失的故障现象与修复方法。通过使用Dcdiag工具诊断,定位注册表键值SysVolReady异常及SCRIPTS目录缺失等核心原因,并提供了修改注册表、创建目录、重启Netlogon服务等逐步修复指南,帮助管理员快速恢复域用户登录功能,确保业务连续性。

weixin_29245767的博客 89

描述符链表(Descriptor Chain)是什么?

描述符链表是硬件加速数据传输的核心数据结构,通过链式描述符(包含地址、长度、控制标志等)实现DMA自动批量处理,显著降低CPU负载。其工作原理为:CPU初始化链表后,硬件按序处理每个描述符,完成自动跳转与中断通知。在网卡收包、NVMe存储等场景中应用广泛,优势包括批处理、低延迟和灵活调度。需注意内存对齐、缓存一致性等实现细节,优化手段包括预分配描述符池、环形缓冲区等。该技术是网络/存储领域提升吞吐量的关键方案。

guigenyi的专栏 778

浅析MFC自定义消息

1、使用场景 通过点击按钮,来实现数据的更新,这个过程在MFC中是由消息机制来实现的,但是如果我想点击对话框中的按钮,在不关闭对话框的情况下更新数据,这就要使用到自定义消息 2、使用方法 1、消息一般都包含消息名称和消息所传递的数据,所以第一步当然是:定义消息名称和消息的数据 #define WM_USER_APPLY WM_USER+0x100 //定义消息名称 typedef struct tagELLPROP { //消息所附带的数据包 /*int nWidth; int nHeight; i

LAZYPET BLOG 568

Ansys Circuit新手必看:IBIS模型导入时,Pin Import和Buffer Import到底怎么选?

本文详细解析了Ansys Circuit中IBIS模型导入时Pin Import与Buffer Import的选择策略,帮助SI/PI工程师根据仿真需求做出正确决策。通过对比两种方式的特性差异和应用场景,提供实用的选择指南和性能优化建议,提升信号完整性仿真效率。

weixin_26846533的博客 262

MFC自定义消息的实现方法

一、概述: 消息机制是windows程序的典型运行机制,在MFC中有很多已经封装好了的消息,如WM_BTN**等。但是在有些特殊情况下我们需要自定义一些消息去完成一些我们所需要的功能,这时候MFC的向导不能帮助我们做到这一点。对此,我们可以通过添加相应的代码去完成这个功能。 二、实现方法: 添加自定义消息操作如下: 1. 建立MFC工程,如基于对话框的应用程序,Test。 2. 在资源中添加...

u011555996的博客 692

A类功率放大器

在A类放大器中,导通角是完整的360°或100%的输入信号,而在其他类别的放大器中,晶体管在一个较小的导通角内导通。通过在输出级使用两个互补的晶体管,其中一个晶体管是NPN或N通道类型,而另一个晶体管是PNP或P通道(互补)类型,以所谓的 "推挽 "配置连接,可以获得比A类放大器更大的功率输出和效率。这种类型的电路效率很低(低于30%),而且对直流电源的消耗很大,输出的功率却很小。由于我们感兴趣的是向负载提供最大的交流功率,同时从电源中消耗尽可能少的直流电,所以我们主要关注的是放大器的 "转换效率"。

LSW20072007的博客 2470

思科网络进阶——多生成树协议(MSTP)配置的一课一得

三、实验拓扑1)设计一个网络架构,要有核心层和接入层,都使用思科交换机。2)企业有4个部门,要求这四个部门都可以上网,但分属不同的VLAN中,这样今后可以做其它安全策略以确保网络安全,这些策略如今后学到的访问控制列表ACL。3)网络架构的设计要具有冗余,防止一条线路或一台设备终端导致的业务中断。4)由于硬件冗余而产生的环路要处理好,也就是要在逻辑上(或者说通过配置)防止物理环路的产生。5)不能因为防止物理环路而导致某端口没有流量,这样浪费端口资源及设备间互联的带宽资源。

zhu52010的博客 3400

c++MFC自定义消息的方法

下面我们给大家介绍一下c++MFC自定义消息的方法吧!定义一个自定义消息号:const UINT WM_MYMESSAGE = WM_USER + n; // 自定义消息一般大于WM_USER,然后就可以为该消息添加映射了。 afx_msg LRESULT OnMyMessage ( WPARAM wParam, LPARAM lParam ); ON_MESSAGE ( WM_MYM

qq_31209383的博客 1366

极路由 极1s J1S hc5661 刷padavan固件

极路由1S刷机指南 准备工作: 下载Breed不死固件 通过WinSCP上传或直接wget获取 执行mtd命令写入Breed 关键步骤: 进入Breed控制台(按住Reset键开机) 备份原厂固件和密钥 下载Padavan固件(RT-N14U-GPIO-12-xiaodu-ji1S-128M.trx) 刷机过程: 在Breed控制台更新固件 等待自动重启完成 初始设置: 管理地址:192.168.123.1 默认账号:admin/admin 无线名称:PCDN 无线密码:1234567890 注意事项:切勿

SimonLiu的博客 1305

MFC自定义消息映射

MFC自定义消息映射 本文章适用于刚开始学习mfc的同学进行阅读。如果文章里面由缺陷,希望阅读者能给予批评与指正。谢谢! 正文 MFC的消息映射,运用了STL标准模板库中的map,运用map的一一映射的特性来进行实现的。 先说一下,我之前学习mfc比较懵的位置,就是那个文件我都不知道哪里的操作该写到那个文件里面去。(是不是感觉我很笨笨哒?) 这是我的理解,如果与大家的不同,或者有哪里不对的地方,希...

weixin_43677716的博客 627

【华为OD机考真题】- 构成的正方形数量(B卷-100分)(Java版)

🔔本文收录于「最新最全华为OD机试真题(Java版)」专栏,手把手带你零基础教学华为OD机试。本题集提供最优题解思路,解题步骤,代码解析,复杂度分析及最优题解源码等,支持多语言题解,助你轻松拿捏OD机考,一举上岸!安利大家关注&&收藏&&订阅!题库正在疯狂收录中,up!up!up!! 🚫提醒:拒绝一切代考/替考,违法必究!专栏所写题库均精心搜集于互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验所撰,欢迎订阅。    💗订阅福利:一次订阅,可永久免费阅读,提供在线答疑解惑,后续题库更新

**My Coding Family** 1349

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

MFC 自定义消息的添加

编译器:VS2015 语言C++ 在工作中有时会碰到添加自定义消息,比如通信时接收数据线程在接到数据后需要发送消息给主界面,进行刷新数据。下面开始实现此过程: 1.建立一个MFC工程,名称随意,比如Test(基于对话框,相信你会建立MFC工程,这个如果不会,你还是先别玩了) 2.在CTestDlg.h文件中(在#pragma once下)添加两个自定义消息: #define WM_MY_M...

li634471989的博客 965

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: HOOK钩子机制学习笔记
下一篇: 实习之初
AstrayLinux
博客等级 码龄15年 55粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值