基于MFC的简易登录器

一、项目创建

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()
{}

四、成果展示

最后,这是编者的课程设计作业,很基础的一个设计,可能有些地方写的还不是太详细,希望能对那些不太懂操作的同学起到帮助!同时也很感谢其他博主给予的灵感!最后谢谢你的支持!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zowey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值