MFC 之用户登录界面

在软件界面中,我们常常需要对用户的身份进行验证,因此我们有必要学习一下登录界面如何编写,当验证通过后,又是如何调用主功能界面的。

一、登录界面搭建

首先我们基于对话框新建一个 MFC 应用程序,将默认的界面编辑成如下图所示:

接下来我们为界面控件添加变量,为用户名编辑框添加变量名 m_username,为密码编辑框添加变量名 m_password 并将密码编辑框设置为不可见,然后将用户名编辑框和密码编辑框的资源 ID 分别更改为 IDC_USERNAMEIDC_PASSWORD,最后分别双击 登录重置、和 显示密码 复选框,添加对应的控件点击响应事件。

这里有一个注意点,要把新建项目后界面中的 确定取消 两个按钮给删除掉,直接重用这两个函数可能会出现无法关闭对话框等问题。

二、界面功能实现

step 1 重置功能

我们首先来实现简单的功能,为 重置 按钮的响应事件添加如下代码:

// 重置按钮响应函数
void CLoginDlg::OnBnClickedButton2()
{
	// TODO: 在此添加控件通知处理程序代码
	// 将用户名和密码编辑框设置为空
	m_username.SetWindowText(L"");
	m_password.SetWindowText(L"");

	// 更新编辑控件的显示值
	UpdateData(FALSE);
}

step 2 显示密码功能

双击 显示密码 复选框,跳转到对应的响应函数,添加如下代码:

// 显示密码复选框响应函数
void CLoginDlg::OnBnClickedCheck1()
{
	// TODO: 在此添加控件通知处理程序代码
	// 更新控件对应变量的值
	UpdateData(TRUE);

	// 获取密码编辑框控件的指针
	CEdit* pmyEdit = (CEdit*)GetDlgItem(IDC_PASSWORD);

	// 根据复选框状态设置密码显示状态
	if (m_passwordcheck.GetCheck() == 1)
	{
		// 将密码显示为明文
		pmyEdit->SetPasswordChar(0);
		//ASSERT(!(pmyEdit->GetStyle() && ES_PASSWORD));    // 检查 pmyEdit 指向的控件是否不具有密码框风格
	}
	else
	{
		// 将密码显示为密文
		pmyEdit->SetPasswordChar(L'●');
	}
	UpdateData(FALSE); // 更新编辑控件的显示值
	pmyEdit->RedrawWindow(); // 立即重绘编辑框以更新显示
}

需要注意的是修改后立即重绘才能立刻将密码显示状态实时刷新,否则只有等鼠标移动到密码编辑框上才会触发密码显示更新。

step 3 登录功能

实现登录功能之前,我们首先在资源视图,右键 Dialog 添加一个 Dialog 资源,并将资源 ID 更改为 MAIN_DIALOG1 作为我们登录后要显示的主界面:

然后右键为主对话框添加类名 CMAINDlg,之后双击 登录 按钮跳转到响应函数,添加如下代码:

// 确认按钮响应函数
void CLoginDlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	// 更新控件对应变量的值
	UpdateData(TRUE);

	// 判断用户名和密码并进入主界面
	CString username, password;
	m_username.GetWindowText(username);
	m_password.GetWindowText(password);
	if (username == "admin" && password == "123456")
	{
		// 关闭登录界面
		CDialogEx::OnOK();

		// 弹出主界面
		CMAINDlg MAINDlg;
		MAINDlg.DoModal();
	}
	else
	{
		// 弹出窗口提示用户名或密码不正确
		MessageBox(L"用户名或密码不正确,请重新输入!", L"提示", MB_OK);
	}
}

好了,最后我们来验证一下效果,输入账号和密码,点击登录,效果如下:

posted @ 2024-10-02 12:50  lostin9772  阅读(31)  评论(0编辑  收藏  举报