一、项目创建
1、打开vs,并且创建一个新的项目(这里编者选择了使用vs2019)
2、这里选择MFC应用(如果这里没有MFC应用的话,请继续往下看,有解决方法)
3、配置完新项目后,会跳出配置“MFC应用程序"的窗口,将应用程序类型改为基于对话框即可。(其余设置可根据个人需要进行更改)
4、如果没有MFC应用该怎么办?
点击电脑左下角,找到Visual Studio Installer,左键双击打开
找到已安装的vs2019,点击修改
在右侧”安装详细信息“ 找到下图中划红色横向的选项并勾选
二、设置登录界面
1、确认创建项目成功,这是项目创建好的样子
如果没有像编者这么多的视图,请点击视图,在视图页面找到自己想要的一些视图
2、设计登陆器页面
在左侧工具箱内有很多简便可用的工具,这里我们需要的是Edit Control和Static Text这两个
左键编辑框,可以弹出对应的属性。我们将第一个编辑框的ID改为 IDC_NAME
第二个改为IDC_PSW
在第二个编辑框中,同时在属性视图中找到”密码“,将其改为True,这样密码就是不可见的状态
这就是页面配置完后的界面(仅供参考)
3、配置变量
右键点击页面,找到类向导
点击进去后找到成员函数,在这里可以看到咱们这几个部件的信息(ID,类型,成员)
左键点击我们的IDC_NAME,按照如图更改配置即可
点击下一步,这里我将最大字符数进行了限制,这样就能限制用户输入字符的数量了。接着点->完成->确定。
同理IDC_PSW也是一样的配置即可,最大字符数可以根据所需修改
三、代码展示
打开”解决问题资源管理器”,找到Dlg.cpp结尾的文件点击开,在这个下面添加函数
1、初始化阶段的函数中进行一些配置
BOOL CMFCloginDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != nullptr)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
m_csName = "";
m_csPsw = "";
UpdateData(FALSE);
GetDlgItem(IDC_PSW)->SetFocus(); //限制一下,如果用户无密码输入,即 确定键 点击不了
GetDlgItem(IDOK)->EnableWindow(FALSE);
return FALSE; // 除非将焦点设置到控件,否则返回 TRUE
}
2、对登陆器的一些逻辑功能进行实现
void CMFCloginDlg::OnBnClickedOk()
{
CString sun;
CString spwd; // 创造两个字符串变量来接受用户输入的信息(用户名和密码等)
GetDlgItemText(IDC_NAME, sun); // 返回用户名
GetDlgItemText(IDC_PSW, spwd); // 返回密码
/* 判断输入的用户名与密码是否正确
使用用户名(可以是学号,也可以是名字)和密码(唯一)相匹配实现登陆
如果其中一项为空或者错误都不可加入系统主页面,并且返回提示信息
*/
if (sun.IsEmpty())
{
MessageBox(_T("用户名不能为空!"));
return;
}
if (spwd.IsEmpty())
{
MessageBox(_T("密码不能为空!"));
return;
}
BOOL isSuccess = (!sun.CompareNoCase(_T("Zowey")) && !spwd.CompareNoCase(_T("123456"))) || (!sun.CompareNoCase(_T("0123456")) &&
!spwd.CompareNoCase(_T("123456"))); // 注意取反语句
// isSuccess = TRUE; //开发过程使用此语句,实现直接登陆
if (isSuccess)
{
MessageBox(_T("用户登录成功"));//_T是一个宏,作用是让你的程序支持Unicode编码
}
else
{
MessageBox(_T("用户名或者密码错误"), _T("登陆失败")); // 返回提示信息
}
}
void CMFCloginDlg::OnEnChangePsw()
{
GetDlgItem(IDOK)->EnableWindow(TRUE);//当密码框中有内容了,将 确定键 解锁
}
void CMFCloginDlg::OnEnChangeName()
{}
四、成果展示
最后,这是编者的课程设计作业,很基础的一个设计,可能有些地方写的还不是太详细,希望能对那些不太懂操作的同学起到帮助!同时也很感谢其他博主给予的灵感!最后谢谢你的支持!