mfc学习(一)

news2025/4/26 5:27:24

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.coloradmin.cn/o/2343013.html

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

相关文章

ThreadLocal详解与实战指南

目录 1. ThreadLocal基本概念 1.1 核心原理 1.2 主要特性 2. ThreadLocal API详解 2.1 核心方法 2.2 基本使用方式 3. ThreadLocal使用场景与实战 3.1 场景一:用户身份信息传递 实现步骤 1.创建用户上下文类 2.创建过滤器或拦截器来设置和清理用户信息 …

【含文档+PPT+源码】基于微信小程序的校园快递平台

项目介绍 本课程演示的是一款基于微信小程序的校园快递平台,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 3.该项目附带…

【CODEMATE】进制转换(transform) 粤港澳青少年信息学创新大赛 C/C++/Python 解题思路

目录 问题描述做题思路,解决过程思路:踩过的坑:核心代码C 语言 / C 切片:C 语言 / C 判断 ‘A’ 数量:Python 切片:Python 判断 ‘A’ 数量: 完整代码C 语言 完整代码C 完整代码Python 完整代码…

2025 Java 开发避坑指南:如何避免踩依赖管理的坑?

在 Java 开发的世界里,依赖管理就像是一座看不见的桥梁,连接着项目所需的各种第三方库和框架。然而,这座桥梁并非总是稳固,稍有不慎就可能掉入 “依赖地狱”,导致项目编译失败、运行异常。2025 年,随着开源…

ARM服务器与X86服务器核心区别分析

ARM服务器与X86服务器核心区别分析 一、架构设计与指令集差异 指令集本质‌ ARM‌:基于RISC(精简指令集),指令定长且简单,单周期执行效率高,硬件设计复杂度低,适合低功耗场景。 X86‌&#xf…

人口老龄化丨AI健康小屋如何实现防病于未然​

随着全球老龄化加剧,“银发浪潮” 对医疗资源、养老护理和健康管理提出了严峻挑战。 由此智绅科技应运而生,七彩喜智慧养老系统构筑居家养老安全网。 AI 健康小屋作为银发科技的创新载体,通过智能化健康监测、精准化风险预警、便捷化医疗衔…

记录搭建自己应用中心

记录搭建自己应用中心 应用架构主应用-管理中心系统文件系统子应用 日志系统日志系统前端日志系统后端 用户系统接入使用暂未完成 研发管理需求面板消息推送任务分配应用发布 应用架构 一直想做个试试,这是一个简易版的,主要是整合下知识的,…

git版本回退 | 远程仓库的回退 (附实战Demo)

目录 前言1. 基本知识2. Demo3. 彩蛋 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 爬虫神器,无代码爬取,就来:bright.cn 本身暂存区有多个文件,但手快了&…

STM32 的 GPIO和中断

GPIO的简单介绍 内部结构 施密特触发器(TTL肖特基触发器) 的工作原理: 施密特触发电路(简称)是一种波形整形电路,当任何波形的信号进入电路时,输出在正、负饱和之间跳动,产生方波或…

【因果推断】(二)CV中的应用

文章目录 因果表征学习因果图 (Causal Diagram)“后门准则”(backdoor criterion)和“前门准则”(frontdoor criterion)后门调整Visual Commonsense R-CNNCausal Intervention for Weakly-Supervised Semantic SegmentationCausal…

分享Matlab成功安装Support Package硬件支持包的方法

分享Matlab成功安装Support Package硬件支持包的方法 文章目录 分享Matlab成功安装Support Package硬件支持包的方法一、 引言二、 操作步骤三、 附件资料四、总结 一、 引言 最近,我想学习基于Matlab simscape & Arduino实现硬件在环仿真,其中物理…

电子级甲基氯硅烷

电子级甲基氯硅烷是一类高纯度有机硅化合物,主要用于半导体制造、光伏产业及高端电子材料领域。以下从技术特性、应用场景、生产工艺、市场动态及安全规范等方面展开分析: 一、核心特性与技术标准 高纯度要求 电子级甲基氯硅烷的纯度通常需达到99.99% 以…

【金仓数据库征文】- 深耕国产数据库优化,筑牢用户体验新高度

目录 引言 一、性能优化:突破数据处理极限,提升运行效率 1.1 智能查询优化器:精准优化数据检索路径 1.2 并行处理技术:充分释放多核计算潜力 1.3 智能缓存机制:加速数据访问速度 二、稳定性提升:筑牢…

热度大幅度下降,25西电经济与管理学院(考研录取情况)

1、经济与管理学院各个方向 2、经济与管理学院近三年复试分数线对比 学长、学姐分析 由表可看出: 1、应用经济及学25年相较于24年下降25分,为325分 2、管理科学与工程25年相较于24年保持不变,为375分 3、工商管理学25年相较于24年下降5分…

DeepSeek+Mermaid:轻松实现可视化图表自动化生成(附实战演练)

目录 一、引言:AI 与图表的梦幻联动二、DeepSeek:大语言模型新星崛起2.1 DeepSeek 全面剖析2.2 多场景应用示例2.2.1 文本生成2.2.2 代码编写 三、Mermaid:代码式图表绘制专家3.1 Mermaid 基础探秘3.2 语法与图表类型详解3.2.1 流程图&#x…

今日行情明日机会——20250425

指数依然在震荡,等待方向选择,整体量能不搞但个股红多绿少。 2025年4月25日涨停板行业方向分析如下: 一、核心行业方向及驱动逻辑 一季报增长(17家涨停) 核心个股:惠而浦、鸿博股份、卫星化学驱动逻辑&am…

一道MySQL索引题

复合索引基础 MySQL中的复合索引(Composite Index)是指由多个列组成的索引。与单列索引不同、复合索引的结构更为复杂,但使用得当可以大幅提升查询性能。 复合索引的工作原理 复合索引的本质是一种有序的数据结、每个列是建立在那个索引前一列存在的情况下、那一…

【linux】设置邮件发送告警功能

当服务器内存不足或者其他故障时,可以通过自动发送故障到邮箱进行提醒。 步骤: 以qq邮箱为例: 登录qq邮箱点击设置 点击账号后,往下翻 找到POP3/IMAP...开启服务 复制授权码 安装邮箱功能 编辑/etc/s-nail.rc 验证 …

【手机】vivo手机应用声音分离方案

文章目录 前言方案 前言 尝试分离vivo手机音乐与其他应用的声音 方案 最佳方案:网易云音乐设置内关闭音量均衡 上传不同的白噪音,成功 goodlock,主要适用于三星手机,vivo不一定适用 app volume control ,可行

关于Safari浏览器在ios<16.3版本不支持正则表达式零宽断言的解决办法

异常原因 今天在升级Dify版本的时候发现低版本的ios手机出现了以下报错: SyntaxError: Invalid regular expression: invalid group specifier nameError: Invalid regular expression: invalid group specifier name Call Stack 46 eval [native code] (0:0) ./n…