MFC入门
新建一个MFC程序
1.安装好VS 2017后并打开,点击文件---->新建---->项目
2.在弹出的对话框中的侧边栏,看到跨平台这个选项,点击展开选择MFC/ATL,选择MFC应用(如果找不到MFC应用只有ATL项目参考这篇文章:(VS2017 新建项目没有MFC项目选项_一只小_小菜鸟的博客-CSDN博客_vs2017没有mfc项目);在名称处对项目进行命名(最好是用英文命名),在位置中选择要保存的路径,点击确定。
3.1在应用对话框的下拉菜单选择“基于多个对话框”;
3.2在使用MFC的下拉菜单中选择"在共享DLL中使用MFC",点击下一步
共享DLL与静态库两者的区别:
“在共享DLL中使用MFC” 选项生成的程序可执行文件比较小,但是要求目标机器必须装有必要的库文件。
“在静态库中使用MFC” 选项生成的程序可执行文件几乎所有的Windows都可以执行,但是程序较大一些,其中包含必要的库文件,可以基本保证在别的机器上正常运行。
(参考文章:MFC的使用——在共享DLL中使用MFC、在静态库中使用MFC_AlbertS的博客-CSDN博客)
4.此处继续勾选最小化框,是为了可以缩小创建的窗口。一直点击下一步,直到完成。
最大化&最小化:选择了会使得创建的窗口直接最大化或者最小化
5.等待创建完成后,选择资源视图,点击项目名称旁边的小三角,展开至Dialog,会看到2个小标签,IDD_ABOUTBOX和IDD_CACUL_DIALOG,分别双击打开会看到是两个小窗口。
6.在上方工具栏的调试中,选择"开始执行(不调试)",会弹出当前创建的这个MFC窗口;
如果不需要窗口中的小组件可以选中后按DEL键删除;窗口也可以自由的放大缩小。
7.如果需要添加组件可以找到侧边的工具箱,将想要的组件选中,再点一下窗口即可创建完成。
如果想要更改组件名称,选中组件,直接输入名称即可。
添加点击事件
1.双击组件,VS 会跳转至对应代码的地方
进入后可以添加代码实现相应的功能;
2.创建按钮的点击事件
MessageBox()
此函数一般需要写入3个参数,最少可以只写1个
int MessageBox( HWND hWnd, LPCTSTR lpText, LPCSTR lpCaption,UINT uStyle );
/*
消息框函数有4个参数:
hwnd: 父窗口的句柄,为NULL,说明消息框没有父窗口,大多数情况下可以省略不写
lpText: 指向要显示字符串的指针,对话框上显示的信息
lpCaption: 消息框的标题,即提示框上部分显示的内容
uStyle: 消息框的内容和形为(即该消息框有几个按钮、文本对齐等状态,可以在20多个属性值中进行组合)
*/
_T()
_T(“Hello”)是一个宏,他的作用是让你的程序支持Unicode编码,因为Windows使用两种字符集ANSI和UNICODE,前者就是通常使用的单字节方式,但这种方式处理象中文这样的双字节字符不方便,容易出现半个汉字的情况。而后者是双字节方式,方便处理双字节字符。
void CcaculDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
MessageBox(_T("欢迎"), _T("标题"));
}
运行后结果:点击hello按钮,回弹出小对话框,显示“欢迎”文本,标题处显示“标题”。
3.定义&获取文本框中的文字
Cstring类用法:
//五种方法,以换行分割,请忽略变量名重名。
CString str; //最简单的无参构造
CString str("ABCDE"); //带内容的构造
CString buf(str); //类的拷贝构造
//buf输出:ABCDE
CString str("ABCDEFGH",3);
//str输出:ABC
CString str('a',5);
//str输出:aaaaa
wchar_t s[]=L"abcdef";
CString str(s);
//str输出:abcdef
/* 或许有人会问,你全用英文,那中文的呢? OK,他来了,请看*/
CString str = _T("我是小猪");
CString buf(str,4);
//buf输出: 我是 ~~~~~~为啥没有小猪,因为小猪被我吃了(开玩笑)
//因为:英文我们一般用1个字节就够了,但是中文字符,一个中文占2个字节,编译器不一样,或许也不一样,想知道你的是多少,可以用下面要说的GetLength方法查看
//参考文章:https://blog.csdn.net/m0_43458204/article/details/119026654
GetDlgItemText:获取给定控件的文本
CString str_id(_T(""));
GetDlgItemText(IDC_EDIT_ID, str_id);//获取帐号
CString str_password(_T(""));
GetDlgItemText(IDC_EDIT_PASSWORD, str_password);//获取密码
/*
nID:控件的标识符,也就是控件的ID。
lpStr:与控件文本的指针,也就是控件文本中的内容,你需要获取的东西。
nMaxCount:在字符指定最大长度,要复制的,该字符串就缓冲区指向由 lpStr。如果该字符串的长度超过限制,字符串被截断。
*/
在工具箱中双击edit control,将文本框拉成想要的大小
首先需要找到文本框的ID,鼠标右键选择属性,打开属性面板,下拉找到ID选项并复制,回到hello按钮的函数中
添加代码:
void CcaculDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CString cs;
GetDlgItemText(IDC_EDIT1,cs);
MessageBox(cs, _T("标题"));
}
实现功能如下:在文本框输入什么数值,点击hello按钮后会返回一样的值
若要固定文本框所输出的值需要用到SetDlgItemTex
SetDlgItemText:将指定控件的文本,使用在 lpszString包含的文本
/*
nID:控件的标识符。
lpszString:与控件文本的指针。
*/
SetDlgItemText(IDC_EDIT_ID,_T("请输入帐号"));
SetDlgItemText(IDC_EDIT_PASSWORD, _T("请输入密码"));
//参考文章:https://blog.csdn.net/mars_xiaolei/article/details/79081810
制作一个计算器界面
_tstoi()
_tstoi意思是将字符串变量转换为整型变量
Format
Format是CString类的一个成员函数,它通过格式操作使任意类型的数据转换成一个字符串。
有了上述的知识可以搭建一个基础的电脑计算器的界面
1.使用工具箱中的按钮,文本框以及静态文本搭建出雏形
2.分别查看文本框的属性,按照ID大小排好顺序并将其对齐
3.编辑代码
void CcalculaterDlg::OnBnClickedButton1()
{
CString CS1;
CString CS2;
CString CS3; //定义三个字符串类型
GetDlgItemText(IDC_EDIT1, CS1);
GetDlgItemText(IDC_EDIT2, CS2); //获取输入的数据
int x = _tstoi(CS1);
int y = _tstoi(CS2); //将数据转换为整型
CS3.Format(_T("%d"), x + y);
SetDlgItemText(IDC_EDIT3, CS3); //输出结果
}
4.输出结果如下:在前两个框中输入数据,点击计算,会在第3个框中显示前两个数之和。
参照视频来自B站:BV1pb411L7yq,感谢up的手把手教学