mfc学习(一)

mfc为微软创建的一个类qt框架的客户端程序,只不过因为微软目前有自己 的亲身儿子C#(.net),所以到2010没有进行维护。然后一些的工业企业还在继续进行维护相关的内容。我目前就接手一个现在这样的项目,其实本质与qt的思路是差不多的内容,但是作为一个202届毕业生,从来没有搞过这个东西,从头开始学习。

前期内容

环境搭建

首先是安装上VS,使用VS Installer,安装不同种类的mfc框架的东西。

QQ20250424-0

项目搭建

打开VS,创建新项目,搜索模版选择mfc应用,输入创建项目的名称。

QQ20250424-1

后面一步,就是需要选择应用程序类型,选择基于对话框。后面直接一键完成到底。

项目东西创建之后内容,变成一个框一样的东西(差不多的内容与qt的ui设置差不多的内容)

QQ20250424-2

VS的mfc整体框架的不同意思

QQ20250424-3

这里部分就是解决方案的地方,存放不同文件的地方!(如果没有找到相应的解决方案资源管理器,可以在最上面的 “视图->解决方案资源管理器 ”)

在这里插入图片描述

这个就是资源视图的不同东西,界面的视图的东西。(有可能看不到资源视图,需要在最上面的一行的东西找到对应的窗口的位置 不同的版本的VS“其它窗口”的位置不同,点击上去然后选择“资源视图”,可以出现相应的东西)

QQ20250424-5

工具箱框,可以拖选不同的模块进行处理不同的模块,目前的内容的使用和qt的Ui组件的拖入差不懂的内容。

安放控件

image-20250424105112777

整个最基本的UI框架底层的不同东西,可以把工具箱里面的不同东西放入这里。不同的控件有不同的使用方法。(本质与信号与槽的差不多的,这边mfc就是用不同宏定义不同的控件名称,用不同的操作进行绑定不同的指令,不同的指令有不同是策略)

按钮键

从工具箱拖取一个Button放到窗口的不同位置,双击按钮可以到对应的函数(类似于qt的槽函数)

QQ20250424-3

这里就是创建一个按钮叫做Button5的一个名字。在资源视图界面,当你点击之后就会进入对应函数。可以在里面添加函数

void CTestDlg::OnBnClickedButton5()
{// TODO: 在此添加控件通知处理程序代码}

静态文本框(编辑框)

QQ20250424-6

单击静态文本框之后,右边为属性,最重要的就是ID(一个定义的宏),用于后面的数据获取,需要用来绑定需要对应的数据。双击静态文本框之后,可以进入整个页面的类(mfc把一个页面写成一个.cpp文件)QQ20250424-8

这里就是进行数据绑定的机制,使用DXX_Text()函数进行数据绑定。其它的数据获取的数据函数。这些文件都放在DoDataExchange()函数的不同内容。

DDX_Text(pDX, IDC_EDIT_NAME, m_strName);  // 绑定编辑框与CString变量
DDX_Check(pDX, IDC_CHECK_ENABLE, m_bEnable); // 绑定复选框与BOOL变量
DDX_Radio(pDX, IDC_RADIO_OPTION1, m_nOption); // 绑定单选按钮组与int变量

第一个参数为默认的参数不同管,第二个选择框或者是按钮组的宏定义,第三个为绑定的CSstring数据类型。数据获取需要,手动调用函数把整个页面的函数获取下来,要把数据推上去,需要函数推动上去。一般放在触发的按钮的不同位置信息。

UpdateData(TRUE);  // 触发DDX和DDV(获取数据)
UpdateData(FALSE); // 更新控件显示(把绑定的数据上传到当前页面)

窗口弹出

mfc把弹出窗口分成不同的类型,有模态和非模态两种不同的类型。模态弹出,弹出窗口之后不能点击其它的窗口的东西。非模态弹出,弹出窗口之后可以同时进行操作其它的窗口不同内容。在mfc之中一个框就是一个类成员,需要自己进行创建这个窗口的类(只需要定义类的名称)在资源视图上面点击添加资源,就会出现一个新的窗。

QQ20250424-9

名字一般与框的相应的作用的名称差不多!后面在应用这个类进行到主函数声明(引入.h的文件)。然后直接进行调用这个类,然后弹出窗口功能基本就实现了。

Main.h:

class Main:public {//自动生产的类不想要管内部是怎么实现的TEST Test1;//这里TEST为一个框的宏或者类的定义
}

Main.cpp 这里是非模态弹出

//点击按钮函数
On_PushBtton{Test1.DoModal();
}

Main.cpp 这里是模态弹出,IDD_MY_DIALOG是弹出的框的宏定义

				Test1.Create(IDD_MY_DIALOG, this);Test1.ShowWindow(SW_SHOW);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/77016.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS:一多能力介绍:一次开发,多端部署

概述 如果一个应用需要在多个设备上提供同样的内容,则需要适配不同的屏幕尺寸和硬件,开发成本较高。HarmonyOS 系统面向多终端提供了“一次开发,多端部署”(后文中简称为“一多”)的能力,可以基于一种设计…

秒出PPT推出更强版本,AI PPT工具进入新纪元!

在现代职场中,PPT是我们沟通和展示信息的重要工具。无论是做产品演示,还是准备工作汇报,一份精美的PPT能大大提升演示效果。然而,传统的PPT制作往往需要消耗大量时间,尤其是在排版、设计和内容调整上。如今&#xff0c…

Godot开发2D冒险游戏——第二节:主角光环整起来!

变量的作用域 全局变量,局部变量,导出变量(可以在检查器当中快速查看) 为玩家添加移动动画 现在游戏的玩家还只是在滑行,我们需要再添加玩家每个方向上的移动效果 删除原先的Item节点,创建一个动画精灵…

颠覆传统NAS体验:耘想WinNAS让远程存储如同本地般便捷

在当今数据爆炸的时代,网络附加存储(NAS)已成为许多企业和个人用户的必备设备。然而,传统硬件NAS解决方案存在诸多限制,如高额成本、复杂设置和有限的远程访问能力。耘想WinNAS以其创新的软件解决方案,彻底改变了这一局面&#xf…

新市场环境下新能源汽车电流传感技术发展前瞻

新能源革命重构产业格局 在全球碳中和战略驱动下,新能源汽车产业正经历结构性变革。国际清洁交通委员会(ICCT)最新报告显示,2023年全球新能源汽车渗透率突破18%,中国市场以42%的市占率持续领跑。这种产业变革正沿着&q…

STM32之DHT11温湿度传感器---附代码

DHT11简介 DHT11的供电电压为 3-5.5V。 传感器上电后,要等待 1s 以越过不稳定状态在此期间无需发送任何指令。 电源引脚(VDD,GND)之间可增加一个100nF 的电容,用以去耦滤波。 DATA 用于微处理器与DHT11之间…

#define STEUER_A_H {PWM_A_ON}

目录 一、括号的区别 二、实例讲解 三、注意事项 四、总结 五、补充 一、括号的区别 大括号 {}: 在 C/C 中,大括号一般用于表示一个代码块或结构体、集合等。例如: 用于定义函数体、控制结构(如 if、for)的代码块。用于初始化…

Redis 缓存—处理高并发问题

Redis的布隆过滤器、单线程架构、双写一致性、比较穿透、击穿及雪崩、缓存更新方案及分布式锁。 1 布隆过滤器 是一种高效的概率型数据结构,用于判断元素是否存在。主要用于防止缓存穿透,通过拦截不存在的数据查询,避免击穿数据库。 原理&…

【玩转全栈】—— 无敌前端究极动态组件库--Inspira UI

目录 Inspira UI 介绍 配置环境 使用示例 效果: Inspira UI 学习视频: 华丽优雅 | Inspira UI快速上手_哔哩哔哩_bilibili 官网:https://inspira-ui.com/ Inspira UI 介绍 Inspira UI 是一个设计精美、功能丰富的用户界面库,专为…

【OpenCV图像处理实战】从基础操作到工业级应用

目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现(6个案例)案例1:图像基本操作案例2:边缘检测案例3&…

fastjson使用parseObject转换成JSONObject出现将字符特殊字符解析解决

现象:将字符串的${TARGET_VALUE}转换成NULL字符串了问题代码: import com.alibaba.fastjson.JSON;JSONObject config JSON.parseObject(o.toString()); 解决方法: 1.更换fastjson版本 import com.alibaba.fastjson2.JSON;或者使用其他JS…

Docker Compose 和 Kubernetes(k8s)区别

前言:Docker Compose 和 Kubernetes(k8s)是容器化技术中两个常用的工具,但它们的定位、功能和适用场景有显著区别。以下是两者的核心对比: ​​1. 定位与目标​​ ​​特性​​ ​​Docker Compose​​ ​​Kubernet…

【21天学习打卡挑战赛】如何学习WEB安全:逼自己在短时间掌握WEB安全核心内容

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

Oracle数据库巡检脚本

1.查询实例信息 SELECT INST_ID, INSTANCE_NAME, TO_CHAR(STARTUP_TIME, YYYY-MM-DD HH24:MI:SS) AS STARTUP_TIME FROM GV$INSTANCE ORDER BY INST_ID; 2.查看是否归档 archive log list 3.查看数据库参数 SELECT NAME , TYPE , VALUE FROM V$PARAMETER ORDER BY NAME; 4.…

Windows 安装 JDK

下载 Java8 的下载直接访问:https://www.oracle.com/java/technologies/downloads/#java8-windows https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html 接受协议后点击下载,再输入账号信息就可以下载了。 如果…

强化学习核心原理及数学框架

1. 定义与核心思想 强化学习(Reinforcement Learning, RL)是一种通过智能体(Agent)与环境(Environment)的持续交互来学习最优决策策略的机器学习范式。其核心特征为: ​​试错学习​​&#x…

Netty前置基础知识之BIO、NIO以及AIO理论详细解析和实战案例

前言 Netty是什么? Netty 是一个基于 Java 的 ​高性能异步事件驱动网络应用框架,主要用于快速开发可维护的协议服务器和客户端。它简化了网络编程的复杂性,特别适合构建需要处理海量并发连接、低延迟和高吞吐量的分布式系统。 1)Netty 是…

TIM输入捕获知识部分

越往左,频率越高;越往右,频率越低。【越紧凑,相同时间,次数越多】 计算频率的方法:测评法、测周法、中界频率。 频率的定义:1s内出现了多少个重复的周期 测评法就是从频率的定义出发的&#…

4.4 记忆机制与上下文管理:短期与长期记忆的设计与应用

记忆机制与上下文管理已成为智能代理(Agent)系统实现高效、智能化行为的核心技术。记忆机制通过短期记忆(Short-Term Memory, STM)和长期记忆(Long-Term Memory, LTM)支持Agent存储、检索和利用信息&#x…

深入了解递归、堆与栈:C#中的内存管理与函数调用

在编程中,理解如何有效地管理内存以及如何控制程序的执行流程是每个开发者必须掌握的基本概念。C#作为一种高级编程语言,其内存管理和函数调用机制包括递归、堆与栈。本文将详细讲解这三者的工作原理、用途以及它们在C#中的实现和应用。 1. 递归 (Recur…