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

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);

相关文章:

  • 处理任务“无需等待”:集成RabbitMQ实现异步通信与系统解耦
  • Python 一等函数(函数内省)
  • Redis安装及入门应用
  • Docker从0-1搭建个人云盘(支持Android iOS PC)
  • 以运营为核心的智能劳动力管理系统,破解连锁零售、制造业排班难题
  • linux centOS7.9 No package docker-ce available
  • 30天通过软考高项-第二天
  • web 分页查询 分页插件 批量删除
  • 金融系统上云之路:云原生后端架构在金融行业的演化与实践
  • 架构-计算机网络
  • 基于STM32的汽车主门电动窗开关系统设计方案
  • 数据结构与算法实战:从理论到落地的深度探索
  • rd.debug启动参数(救援模式下)
  • 机器人操作中的生成式 AI:综述(上)
  • 【缓存与数据库结合方案】伪从技术 vs 直接同步/MQ方案的深度对比
  • Java 运算符:深度解析
  • 2025最新软件测试面试八股文(答案+文档+视频讲解)
  • 【前端】【业务场景】【面试】在前端开发中,如何处理国际化(i18n)和本地化(l10n)需求?请描述具体的实现步骤和可能用到的工具。
  • Kotlin函数体详解:表达式函数体 vs 代码块函数体——使用场景与最佳实践
  • sysstat介绍以及交叉编译
  • 当哲学与戏剧作为一种生活方式——《人生六戏》分享会
  • AI翻译技术已走向大规模商用,应用场景覆盖多个关键领域
  • 基辅响起密集爆炸声,乌方称俄军发动大规模导弹袭击
  • 刺激视网膜可让人“看”到全新颜色
  • 岳阳一管道疑似有黑水直排东洞庭湖,生态环境局:已赶往现场核查
  • 灰鹦鹉爆粗口三年未改?云南野生动物园:在持续引导