mfc学习(一)
mfc为微软创建的一个类qt框架的客户端程序,只不过因为微软目前有自己 的亲身儿子C#(.net),所以到2010没有进行维护。然后一些的工业企业还在继续进行维护相关的内容。我目前就接手一个现在这样的项目,其实本质与qt的思路是差不多的内容,但是作为一个202届毕业生,从来没有搞过这个东西,从头开始学习。
前期内容
环境搭建
首先是安装上VS,使用VS Installer,安装不同种类的mfc框架的东西。
项目搭建
打开VS,创建新项目,搜索模版选择mfc应用,输入创建项目的名称。
后面一步,就是需要选择应用程序类型,选择基于对话框。后面直接一键完成到底。
项目东西创建之后内容,变成一个框一样的东西(差不多的内容与qt的ui设置差不多的内容)
VS的mfc整体框架的不同意思
这里部分就是解决方案的地方,存放不同文件的地方!(如果没有找到相应的解决方案资源管理器,可以在最上面的 “视图->解决方案资源管理器 ”)
这个就是资源视图的不同东西,界面的视图的东西。(有可能看不到资源视图,需要在最上面的一行的东西找到对应的窗口的位置 不同的版本的VS“其它窗口”的位置不同,点击上去然后选择“资源视图”,可以出现相应的东西)
工具箱框,可以拖选不同的模块进行处理不同的模块,目前的内容的使用和qt的Ui组件的拖入差不懂的内容。
安放控件
整个最基本的UI框架底层的不同东西,可以把工具箱里面的不同东西放入这里。不同的控件有不同的使用方法。(本质与信号与槽的差不多的,这边mfc就是用不同宏定义不同的控件名称,用不同的操作进行绑定不同的指令,不同的指令有不同是策略)
按钮键
从工具箱拖取一个Button放到窗口的不同位置,双击按钮可以到对应的函数(类似于qt的槽函数)
这里就是创建一个按钮叫做Button5的一个名字。在资源视图界面,当你点击之后就会进入对应函数。可以在里面添加函数
void CTestDlg::OnBnClickedButton5()
{// TODO: 在此添加控件通知处理程序代码}
静态文本框(编辑框)
单击静态文本框之后,右边为属性,最重要的就是ID(一个定义的宏),用于后面的数据获取,需要用来绑定需要对应的数据。双击静态文本框之后,可以进入整个页面的类(mfc把一个页面写成一个.cpp文件)
这里就是进行数据绑定的机制,使用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之中一个框就是一个类成员,需要自己进行创建这个窗口的类(只需要定义类的名称)在资源视图上面点击添加资源,就会出现一个新的窗。
名字一般与框的相应的作用的名称差不多!后面在应用这个类进行到主函数声明(引入.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);