欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > mfc学习(一)

mfc学习(一)

2025/4/25 17:06:35 来源:https://blog.csdn.net/asibble/article/details/147491464  浏览:    关键词: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);

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词