当前位置: 首页 > news >正文

MFC将类A中的事件在类B中处理采用回调函数实现

需求:
在类A的界面上有一个tab控件。tab控件上面有那个页面。在MFC编程中一个tab的一个页面就应该是一个新的类。在tab的一个页面上有一个list控件。现在需要将list控件的点击事件,双击事件等在类A里面处理。

解决:
在类B里面给控件list添加点击事件。在点击事件里面回调类A的函数。从而实现。

部分代码:
类B:

定义回调函数指针

	// 回调函数指针std::function<void(NMHDR *, int,int)> m_ItemChangedCallback;

定义设置回调指针的函数

void DlgRadarItemTabI002::SetItemChangedCallback(std::function<void(NMHDR *, int,int)> callback)
{m_ItemChangedCallback = callback; // 设置回调函数};

在事件里面回调

void DlgRadarItemTabI002::OnLvnItemchangedListI002(NMHDR *pNMHDR, LRESULT *pResult)
{// 检查回调是否有效if (m_ItemChangedCallback){m_ItemChangedCallback(pNMHDR,111,2); // 调用回调,传递变化的项索引}*pResult = 0; // 表示消息处理成功}

类A:
给类B对象设置回调函数指针;

	m_radarItemTab1.SetItemChangedCallback(std::bind(&CRadarSetupTestDlg::OnTab1ItemChanged, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));m_radarItemTab2.SetItemChangedCallback(std::bind(&CRadarSetupTestDlg::OnTab1ItemChanged, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));m_tab.AddPage(_T("I001"), &m_radarItemTab1, IDD_DIALOG_I001);m_tab.AddPage(_T("I002"), &m_radarItemTab2, IDD_DIALOG_I002);m_tab.Show();

定义回调函数

void CRadarSetupTestDlg::OnTab1ItemChanged(NMHDR *pNMHDR, int type,int tabPage)
{if (tabPage == 1){}else if(tabPage == 2){}if (type == 111){}else if (type == 222){}else if(type == 333){}
};

回调函数需要传什么参数可以按需求设置,这里没有用自定义消息是因为类A中包含了类B的头文件。自定义消息在类B里面拿到到类A的对象。所以使用回调函数

相关文章:

MFC将类A中的事件在类B中处理采用回调函数实现

需求&#xff1a; 在类A的界面上有一个tab控件。tab控件上面有那个页面。在MFC编程中一个tab的一个页面就应该是一个新的类。在tab的一个页面上有一个list控件。现在需要将list控件的点击事件&#xff0c;双击事件等在类A里面处理。 解决&#xff1a; 在类B里面给控件list添加…...

公众号 微信登录

export function getWxCode(that, localhostUrl) { // localhostUrl 当前页面的路径 传这个也可以this.$route.fullPath// console.log(that.$store.state.wxSessionData)// console.log(that.$store.state.wxSessionData.openId)//openId为undefine执行获取openid判断是否没有…...

sanic + webSocket:股票实时行情推送服务实现

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…...

Unity动态给按钮各个状态下的图片赋值

Unity动态给按钮各个状态下的图片赋值 using UnityEngine; using UnityEngine.UI; public class ButtonOnClickTest : MonoBehaviour {public Button btn;public Sprite _highlighterSprite;public Sprite _pressedSprite;public Sprite _selectesdSprite;public Sprite _disa…...

xiaomi pad 6PRO 小米平板6 pro hyperOS降级 澎湃os 降级MIUI 14 教程 免解锁BL 降级,168小时解锁绑定

小米平板 6 Pro 机型代号 &#xff1a;liuqin 降级MIUI 14 小米澎湃 OS 正式版 澎湃OS安卓发布日期卡刷包线刷包OS1.0.7.0.UMYCNXM14.02024-07-13miui_LIUQIN_OS1.0.7.0.UMYCNXM_d618a5c980_14.0.zipliuqin_images_OS1.0.7.0.UMYCNXM_20240705.0000.00_14.0_cn_8cbf5920be.…...

MySQL 备份一个表

语法(创建一个与table1结构相同的新表table2&#xff0c;并且将table1的数据复制到table2)&#xff1a; create table table2 as select * from table1 举例(备份tb_log表到tb_log_20240815中去)&#xff1a; create table tb_log_20240815 as select * from tb_log...

鸿蒙开发入门day10-组件导航

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;还请三连支持一波哇ヾ(&#xff20;^∇^&#xff20;)ノ&#xff09; 目录 组件导航 (Navigation) 设置页面显示模式 设置标题栏模式 设置菜…...

虚拟机Linux的坑 | VMware无法从主机向虚拟机 跨系统复制粘贴拖动 文件/文本

这个情况下&#xff0c;还是没办法跨系统拖拽文件 解决办法&#xff1a; 在终端中输入命令 sudo apt-get autoremove open-vm-tools sudo apt-get install open-vm-tools sudo apt-get install open-vm-tools-desktop过程中只要需要选择是否覆盖的地方&#xff0c;都输入&…...

Chat App 项目之解析(二)

Chat App 项目介绍与解析&#xff08;一&#xff09;-CSDN博客文章浏览阅读76次。Chat App 是一个实时聊天应用程序&#xff0c;旨在为用户提供一个简单、直观的聊天平台。该应用程序不仅支持普通用户的注册和登录&#xff0c;还提供了管理员登录功能&#xff0c;以便管理员可以…...

数据结构与算法 - 双指针

一、移动零 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12]输出: [1,3,12,0,0]示例 2: 输入: nums …...

Python3网络爬虫开发实战(10)模拟登录(需补充账号池的构建)

文章目录 一、基于 Cookie 的模拟登录二、基于 JWT 模拟登入三、账号池四、基于 Cookie 模拟登录爬取实战五、基于JWT 的模拟登录爬取实战六、构建账号池 很多情况下&#xff0c;网站的一些数据需要登录才能查看&#xff0c;如果需要爬取这部分的数据&#xff0c;就需要实现模拟…...

SQL 调优最佳实践笔记

定义与重要性 SQL 调优&#xff1a;提高SQL性能&#xff0c;减少查询时间和资源消耗。目标&#xff1a;减少查询时间和扫描的数据行数。 基本原则 减少扫描行数&#xff1a;只扫描所需数据。使用合适索引&#xff1a;确保WHERE条件命中最优索引。合适的Join类型&#xff1a;…...

Eclipse的使用配置教程:必要设置、创建工程及可能遇到的问题(很详细,很全面,能解决90%的问题)

Eclipse的使用配置&#xff1a; Ⅰ、Eclipse 的必要配置&#xff1a;1、Eclipse 的安装&#xff1a;其一、将 Eclipse 解压或安装到没有中文且没有空格的路径下。其二、拿到 eclipse.exe 文件&#xff0c;傻瓜式安装即可; 2、设置工作空间(workspace)&#xff1a;其一、首次启动…...

遗传算法与深度学习实战(4)——遗传算法详解与实现

遗传算法与深度学习实战&#xff08;4&#xff09;——遗传算法详解与实现 0. 前言1. 遗传算法简介1.1 遗传学和减数分裂1.2 类比达尔文进化论 2. 遗传算法的基本流程2.1 创建初始种群2.2 计算适应度2.3 选择、交叉和变异2.4算法终止条件 3. 使用 Python 实现遗传算法3.1 构建种…...

Nginx+Tomcat实现负载均衡、动静分离集群部署

文章目录 一、Nginx​​实现负载均衡原理1.正向代理和反向代理2.负载均衡模式1. 轮询&#xff08;Round Robin&#xff09;&#xff1a;2. 最少连接数&#xff08;Least Connections&#xff09;&#xff1a;3. IP 哈希&#xff08;IP Hash&#xff09;&#xff1a;4. 加权轮询…...

英语学习8月19日

词根前缀后缀 accomplishment 成就 acid n.酸的&#xff0c;adj.酸的 acidity n.酸性 ace adj.顶尖的 acute adj.敏锐的&#xff1b;急性的&#xff1b;严重的 acuity n.敏锐 obtuse adj.迟钝的&#xff1b;钝角的 acuity n.敏锐&#xff0c;严重 1.前缀ac: 尖&#x…...

关于windows环境使用nginx的一些性能问题

遇到的问题 最近在一个windows环境中部署nginx&#xff0c;遇到了以下问题&#xff1a; 1. nginx启动了九个线程&#xff08;1master8woekr&#xff09;&#xff0c;但是所有链接都被1个woker接收&#xff0c;其余worker不工作 2. 用户端访问web很慢&#xff0c;登录服务器使…...

“解决Windows电脑无法投影到其他屏幕的问题:尝试更新驱动程序或更换视频卡“

背景: 今天在日常的工作中&#xff0c; 我想将笔记本分屏到另一个显示屏&#xff0c;我这电脑Windows10&#xff0c;当我按下Windows键P键&#xff0c;提示我"你的电脑不能投影到其他屏幕&#xff0c;请尝试从新安装驱动程序或使用"遇到这种问题。 解决方法1: 1.快…...

第10章 无持久存储的文件系统 (2)

目录 10.1 proc文件系统 10.1.2 数据结构 10.1.3 初始化 10.1.4 装载 proc 文件系统 10.1.5 管理 /proc 数据项 10.1.6 读取和写入信息 10.1.7 进程相关信息 10.1.8 系统控制机制 本专栏文章将有70篇左右&#xff0c;欢迎关注&#xff0c;查看后续文章。 10.1 proc文件…...

云计算实训29——mysql主从复制同步、mysql5.7版本安装配置、python操作mysql数据库、mycat读写分离实现

一、mysql主从复制及同步 1、mysql主从自动开机同步 2、配置mysql5.7版本 mysql-5.7.44-linux-glibc2.12-x86_64.tar 启动服务、登录 对数据库进行基本操作 3、使用python操纵mysql数据库 4、编辑python脚本自动化操纵mysql数据库 二、mycat读写分离实现 1.上传jdk和mycat安装…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...