VC6添加自定义消息(主窗口向子窗口发送消息)

2023-10-29

从主窗口向子窗口发送消息,可以在子窗口中添加自定义的消息,然后在主窗口中需要地方呼叫该消息。

呼叫方法:

1.将子窗口添加为主窗口的成员变量;

2.主窗口呼叫该消息,成员变量名.SendMessage(UM_PROGRESS);

 

子窗口添加自定义消息步骤如下:

     1、定义消息。

      在Windows中,所有的消息都用一个特定的整数值来表示,为了避免自定义消息与已存在的其他消息发生冲突,应该利用Windows提供的一个常量:WM_USER,小于这个常量的是系统保留的。即用户自定义的消息至少为WM_USER+1,注意最后表示的消息的数值不要超过0x7FFF。在开发Windows95应用程序时,Microsoft推荐用户自定义消息至少是WM_USER+100,因为很多新控件也要使用WM_USER消息。

#define UM_PROGRESS WM_USER + 100

 将上句添加到子窗口类的头文件(.h)中。

2、在子窗口类头文件的AFX_MSG块中声明消息处理函数:

class CMainFrame:public CFrameWnd{

protected:

//{{AFX_MSG(CMainFrame)

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

afx_msg void OnTimer(UINT nIDEvent);

afx_msg LRESULT OnProgress(WPARAM wParam, LPARAM lParam);

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

3、在子窗口类的实现文件(.cpp)中,使用ON_MESSAGE宏指令将消息映射到消息处理表中。

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)

//{{AFX_MSG_MAP(CMainFrame)

ON_WM_CREATE()

ON_WM_TIMER()

ON_MESSAGE(UM_PROGRESS, OnProgress)//注意这条语句的后面没有分号

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

4、实现消息处理函数。该函数使用WPRAM和LPARAM参数并返回LPESULT。

LRESULT CMainFrame::OnProgress(WPARAM wParam,LPARAM lParam){

CRect rect;

m_wndStatusBar.GetItemRect(2,&rect); //获得窗格区域

//创建进度栏,注意第三个参数为CWnd* pParentWnd,根据情况选择父窗体

m_progress.Create(WS_CHILD|WS_VISIBLE|PBS_VERTICAL,rect,this,123);

m_progress.SetPos(50);

return 0;

}

5、在适当的时候发送自定义消息,进行消息处理。需要注意使用SendMessage还是PostMessage进行处理:SendMessage是消息处理完毕后再返回;而PostMessage则是把消息放到消息队列后立即返回。

SendMessage(UM_PROGRESS);

PostMessage(UM_PROGRESS);

如果用户需要整个系统唯一的消息,可以调用SDK函数RegisterWindowMessage并使用ON_REGISTER_MESSAGE宏指令取代ON_MESSAGE宏指令,其余步骤同上。

 

转自:http://blog.sina.com.cn/s/blog_6bd15b910100nc00.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VC6添加自定义消息(主窗口向子窗口发送消息) 的相关文章

  • 隐藏dlg窗口方法

    单独找到任务栏设置父窗口 并不能达到隐藏窗口的效果 还是有一个对话框在任务栏中出现 0 窗口属性设置步骤2 调整对话框属性ToolWindow为true步骤3 调整对话框属性Border为None 1 设置任务栏位父窗口 CWnd task
  • C++ 包管理器

    C 包管理器 Vcpkg Vcpkg 可帮助您在 Windows Linux 和 MacOS 上管理 C 和 C 库 相关资料 Vcpkg 管理 C 和 C 库 vcpkg github conan Conan是分布式跨平台开源的C C 软
  • VC ini配置文件常用操作

    A 读写ini文件 ini文件 即Initialization file 这种类型的文件中通常存放的是一个程序的初始化信息 ini文件由若干个节 Section 组成 每个Section由若干键 Key 组成 每个Key可以赋相应的值 读写
  • VC++ 获取文件版本号

    源码实现 pragma comment lib Version lib typedef struct VS VERSIONINFO WORD wLength WORD wValueLength WORD wType WCHAR szKey
  • c#使用钩子拦截鼠标键盘事件

    窗体本身带的键盘鼠标事件函数只能响应窗体自己的事件 窗体之外的事件是不会响应的 比如当窗体最小化的时候也响应就要用全局钩子拦截消息来处理了 大概过程就是在窗体初始化时加载钩子 等待事件消息 事件触发后调用响应函数处理 using Syste
  • 获取网络,本地连接的具体名称(Friendly Name)

    工作需要 程序需要 以下代码可以得到 本地连接的具体名称 在VC 6 0下需安装sdk 添加 以下代码 include
  • MFC视频教程(孙鑫)学习笔记2-掌握C++

    这一集中 主要总结了C 经典语法与应用 1 C 的三大特性 封装 继承 多态 2 C 中提供了一套输入输出流类的对象 它们是cin cout和cerr 对应c语言中的三个文件指针stdin stdout stderr 分别指向终端输入 终端
  • 蓝桥杯 马虎的算式

    标题 马虎的算式 小明是个急性子 上小学的时候经常把老师写在黑板上的题目抄错了 有一次 老师出的题目是 36 x 495 他却给抄成了 396 x 45 但结果却很戏剧性 他的答案竟然是对的 因为 36 495 396 45 17820 类
  • VC++、MFC中最好的开源项目

    介绍一下用VC MFC写的最好的开源项目 Sourceforge net中有许多高质量的VC 开源项目 我列举了一些可以作为VC 程序员的参考 一 优秀的开源项目 7 Zip http sourceforge net projects se
  • LNK2005: _DllMain@12 already defined in LIBCMTD.lib(dllmain.obj)

    今天使用VS2003创建一个MFC 的dll工程时 出现以下错误 VPR error LNK2005 DllMain 12 already defined in LIBCMTD lib dllmain obj VPR error LNK20
  • PNG透明窗体全攻略(控件不透明)vc++程序指导

    这两天在研究透明窗体 总算略有小成 网上大部分文章都是介绍到把窗体弄透明就没有下文 其实窗体透明并不难 难就难在透明的窗体上还要放控件 今 天我就把窗体透明一直到控件不透明怎么制作一块给写了吧 先截张图诱惑下你们 如果你没兴趣就没必要再看下
  • VC++6.0的兼容性问题解决方案

    VC6 0 能够在 XP 下很好的运行 无需进行额外的设置 但在 Win7 Win8 和 Win10 下 安装完成后还要修改兼容模式才可以 在Win7或Win10下使用VC6 0 对于Win7和Win10 需要将VC6 0的兼容模式修改为
  • 【小宝解惑】VC++中delete和delete [] 的区别

    我们通常从教科书上看到这样的说明 delete 释放new分配的单个对象指针指向的内存 delete 释放new分配的对象数组指针指向的内存 那么 按照教科书的理解 我们看下下面的代码 int a new int 10 delete a 方
  • VC++中窗口过程函数及其消息发送、响应机制介绍

    在VC 中 窗口过程函数是应用程序定义的一个函数 主要功能是处理发送给窗口的消息 窗口过程函数的定义是 virtual LRESULT WindowProc UINT message WPARAM wParam LPARAM lParam
  • CWnd和HWND的区别

    所有控件类都是CWnd类的派生类 CWnd的所有成员函数在控件类中都可以使用 在MFC中 CWnd类是一个很重要的类 它封装了Windows的窗口句柄HWND 在Windows编程中 每一个窗口都是有窗口句柄标识的 但是 类CWnd的对象和
  • 如何去掉去掉VC++的安全警告提示

    在用Vc进行进程编写时 你有可能会遇到一大堆的警告 warning C4996 如 warning C4996 This function or variable may be unsafe 原因是VC使用了更加安全的run time li
  • VS2005(VC++)远程调试方法

    仅我目前了解很多人还在使用成本很高的本地调试方法 即在需要调试的机器上安装VS环境 这样的好处就是直接 但是成本很高 要在目标机器安装一个VS的Copy 国内可能不是问题 还有源代码安全问题 同步问题等等 开始 已知 A B两个服务器 如果
  • 一些主流IDE(VC6、VS2010、Code::Blocks、Eclipse)使用过程中常见问题集锦

    关于主流IDE使用的一些常见问题 本文由CSDN 蚍蜉撼青松 主页 http blog csdn net howeverpf 整理原创 转载请注明出处 一 在Win7下使用VC6 0应该注意的几个问题 我们知道 Win7和VC6 0本身是不
  • VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题...

    VC9编译的程序在没有装过VC9 确切的说是 Net Framework3 5 的机器上运行时 如果提示 由于应用程序配置不正确 应用程序未能启动 重新安装应用程序可能会纠正这个问题 这个错误 那么就说明该程序动态链接了VC9的运行时库 如
  • 系统托盘区句柄研究和C#基本托盘编程

    因为我的系统托盘区小图标有时候会不可见 在还是在 研究一下系统托盘区的句柄 是否每个小图标是一个单个窗口 就像form的button一样 下图句柄工具 把问号拖动到窗口上 就会显示该窗口的句柄和窗口类等信息 拖到系统托盘区看一下 拖到任何一

随机推荐

  • 基于STM32红外避障小车的设计(有代码)

    什么是避障小车 用红外光电传感器 探测到物体即输出脉冲 输入到单片机中处 理一下 再对电机驱动模块进行控制 实现壁障的功能 这样的避障小车又称为简单的避障机器人 各种避障方法 1 红外线避障 2 超声波避障 红外避障原理 基本硬件 红外发射
  • FATAL Port 4000 has been used. Try other port instead.

    我在另一个powershell也打开了hexo s 关掉另一个powshell就好了
  • vue移动端项目屏幕适配--flexible rem

    开始 首先 我们使用 vue 的脚手架 vue cli 来初始化一个 webpack 项目 没有安装过 vue cli 的请先安装 vue cli 安装所需依赖后安装 lib flexible 和 px2rem loader 1 下载lib
  • AOP的切入点Pointcut中的execution表达式详解

    在面向切面编程 AOP 中 切入点 Pointcut 用于定义在哪些方法或代码段上应该应用切面的逻辑 切入点使用表达式来匹配目标方法的签名和执行位置 在 Spring AOP 中 常用的切入点表达式是基于方法的 execution 表达式
  • 理解Vulkan中的各种对象

    学习Vulkan API的一个重要部分是了解其中定义了哪些类型的对象 它们代表了什么 以及它们如何相互关联 为了帮助解决这个问题 创建了一个图表 展示了所有vulkan对象及其一些关系 尤其是从另一个对象创建对象的顺序 每个vulkan对象
  • java中局部变量、全局变量和static的区别(简单易懂)

    java中的变量类型有 1 类变量 独立于方法之外的变量 用 static 修饰 2 实例变量 独立于方法之外的变量 不过没有 static 修饰 3 局部变量 类的方法中的变量 比如 Java 局部变量 局部变量声明在方法 构造方法或者语
  • 回调函数的原理及运用

    第一个问题 什么是回调函数 来看一下百度百科的定义为 回调函数就是一个通过函数指针调用的函数 如果你把函数的指针 地址 作为参数传递给另一个函数 当这个指针被用来调用其所指向的函数时 我们就说这是回调函数 回调函数不是由该函数的实现方直接调
  • hadoop环境搭建之安装JDK

    判断是否安装了jdk 使用java version 和 javac命令判断是否安装了jdk root localhost ssh java version bash java command not found root localhost
  • 【重铸Java根基】为什么Java中只有值传递

    最近带应届新员工 教然后知不足 发现自己把很多基础知识已经还给了大学老师 因此开贴 温故而知新 从最基础的Java知识开始由浅入深 在某个知识点中遇到有疑惑的点会额外多写几句或者单独开帖子展开 先要搞清楚什么是形参 什么是实参 形参 定义方
  • 寄存器的映射过程

  • vue学习-02vue入门之组件

    删除Vue cli预设 在用户根目录下 C Users 你的用户名 这个地址里有一个 vuerc 文件 修改或删除配置 组件 Props 组件之间的数据传递 Prop 的大小写 camelCase vs kebab case 不敏感 Pro
  • 线程同步概念

    带着问题去思考 什么是线程同步 线程同步能解决哪些问题 如何实现线程同步 线程同步是指两个或多个线程协同步调 按预期的顺序执行代码 若两个或多个线程同时写同一块内存或访问同一资源时 需线程同步 若线程A的执行依赖线程B的结果 需线程同步 输
  • 在外部js文件中直接调用vue文件中自定义的方法

    1 在vue文件引入API import getCurrentInstance onMounted from vue onMounted 用于挂载数据 getCurrentInstance 用于获取实例后再使用 2 定义setup 方法 s
  • vue——组件中的样式改变方法

    一般我们自己封装的组件或者组件库 element vant antdesign 中的样式在页面中必要的时候需要改变时 解决方法如下 解决方法 在页面中重新写一个 不要改成局部的 scope 页面中全局修改 在上一部的中 改变组件样式时 要先
  • 关于OpenAI的Gym中的step方法

    文章目录 导读 Gym的step方法 最后的话 导读 本文就只是关于step方法的参数与返回值的一个小小的学习笔记 这也是没有第一时间查官方文档而造成的时间消耗 所以 这篇博客就是逼自己查一下 Gym的step方法 既然都已经用pip下载了
  • whois命令简介

    whois命令简介 一 概述 whois是Linux Unix环境下的命令 按字面意思就是问 他是谁 通过对域名的检索 可以反馈回域名的注册信息 包括持有人 管理资料以及技术联络资料 也包括该域名的域名服务器 但是在世界上有几个主要的who
  • Contest2967 - 2022-2023-2 ACM集训队每周程序设计竞赛(1)

    问题 C 付哥题做不完了 内存限制 1024 MB时间限制 2 000 S评测方式 文本比较命题人 admin提交 323解决 44 返回比赛提交提交记录侧边提交 题目描述 付哥今天在做题 他有两个题单A和B 里面的题目数量分别为n和m 每
  • 数据库语法时用到的{},,[]等各类括号分别代表什么?

    lt gt 尖括号 用于分隔字符串 字符串为语法元素的名称 SQL语言的非终结符 定义操作符 用在生成规则中 分隔规则定义的元素和规则定义 被定义的元素位于操作符的左边 规则定义位于操作符的右边 方括号表示规则中的可选元素 方括号中的规则部
  • 推荐一些好用的小技巧给你

    技巧一 微信设置通话铃声 微信 作为一款主打移动通信的软件 没有自己专属的通话 彩铃 是否有些说不过去呢 所以我们可以在微信设置中 添加自己专属的 通话铃声 这样无论哪个好友拨打 微信电话 给你 都能听到你设置的 通话铃声 啦 操作指南 打
  • VC6添加自定义消息(主窗口向子窗口发送消息)

    从主窗口向子窗口发送消息 可以在子窗口中添加自定义的消息 然后在主窗口中需要地方呼叫该消息 呼叫方法 1 将子窗口添加为主窗口的成员变量 2 主窗口呼叫该消息 成员变量名 SendMessage UM PROGRESS 子窗口添加自定义消息