一、新建项目
打开VS2022——>创建新项目——>选择MFC应用,点击下一步——>修改项目名称和位置,点击创建——>修改应用程序类型、项目样式经典菜单选项
二、添加预处理指令
VS建议采用带_s的函数,如scanf_s、strcpy_s,但这些并不是标准C/C++函数。要想继续使用此函数,需要添加 _CRT_SECURE_NO_WARNINGS这个预定义。
在项目 -> 属性 -> C/C++->预处理器 -> 预处理器定中添加 _CRT_SECURE_NO_WARNINGS:
三、设置窗口属性
3.1设置窗口大小和居中显示
1.在CMainFrame.cpp的OnCreate()中接着写代码:
//设置窗口的位置和大小:CWnd::MoveWindow
//0, 0, 起点坐标x和y
//800, 500, 窗口宽度和高度
MoveWindow(0, 0, 800, 500);
//将窗口移动到屏幕中央,CWnd::CenterWindow
CenterWindow();
3.2设置窗口标题
在MFCApplication7Doc.cpp中的OnNewDocument()函数中添加如下代码:
//设置窗口标题,CDocument::SetTitle
SetTitle(TEXT("MFC"));
四、文件处理
4.1 文件内容格式
登陆用户信息:
4.2 设计文件处理类CInfoFile
4.2.1 添加文件处理类CInfoFile
4.2.2头文件(CInfoFile.h)的设计
定义配置文件路径宏:
#define _F_LOGIN "./login.ini"
五、登陆对话框
5.1 ui设计
5.1.1
1、添加对话框资源(ID修改为DIALOG_LOGIN)
2、右击对话框选择属性,修改描述文字
3、 添加所需控件和修改描述文字(右击用户和密码控件选择属性):
5.1.2
1、选中对话框 -> 右击 -> 添加类 -> 类名:CLoginDlg ;基类:CDialogEx2
2、根据需求,控件关联所需变量
用户名编辑区关联CString m_user,密码登陆框关联CString m_pwd。
右击示例编辑框,添加变量:(第二个一样)
3 功能实现
在对话框类中,重写 OnInitDialog 函数,进行初始化,设置一些默认登录信息。
m_user = TEXT("xd"); //用户名
m_pwd = TEXT("123456");//密码
UpdateData(FALSE); //内容更新到对应的控件
4、登陆窗口的创建
在应用程序类MFCApplication6.h(我的项目名为:MFCApplication6,前面呈现的叫MFCApplication7是因为我想复刻一下创建的过程)的InitInstance() 里面的APP 创建之前创建登陆对话框:
CLoginDlg dlg; //创建登陆对话框,需要头文件#include "LoginDlg.h"
dlg.DoModal(); //以模态方式运行
5、登陆和取消按钮功能实现
双击登陆按钮
void CLoginDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE); //更新控件的数据到对应的变量
CInfoFile file; //创建操作文件类对象,需要头文件#include "InfoFile.h"
CString user, pwd;
//读取配置文件,获取用户名密码,参数为引用传递
file.ReadLogin(user, pwd);
if (m_user == user)//用户名相等
{
if (m_pwd != pwd)
{
MessageBox(_T("密码错误"));
m_user.Empty(); //清空
m_pwd.Empty();
}
else
{
CDialogEx::OnOK();
}
}
else
{
MessageBox(_T("用户名不存在"));
m_user.Empty();
m_pwd.Empty();
}
}
双击取消按钮
void CLoginDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
exit(0); //结束整个程序
}
6、右上角关闭按钮功能实现
选中对话框模板 -> 右击 -> 属性 -> 消息 -> WM_CLOSE
//关闭按钮
void CLoginDlg::OnClose()
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
exit(0); //结束整个程序
CDialogEx::OnClose();
}
7、编辑区回车键关闭对话框问题解决
void CLoginDlg::OnOK()
{
// TODO: 在此添加专用代码和/或调用基类
//CDialogEx::OnOK();
}
六、成果展示(图片背景下次再说)