在已经做好的对话框的MFC项目添加一个登陆界面
给基于对话框的应用程序添加登陆界面,也就是增加一个新的对话框。
在一般的基于对话框的应用程序的CXXXApp.cpp中都会有:
CXXXDlg dlg; //程序的主对话框
m_pMainWnd = &dlg; //设置为主对话框,也就是所主对话框的结束也就意味着程序的结束
INT_PTR nResponse = dlg.DoModal(); //弹出主对话框
if (nResponse == IDOK) //根据对话框的返回值设置要执行的操作
{... }
else if (nResponse == IDCANCEL)
{... }
现在就来开始添加登陆界面:
1、先建好新的登陆对话框类CLoginDlg(MFC类,基于CDialog的),生成.cpp和.h文件。
2、在资源视图里绘制好登陆界面的内容:可以输入用户名和密码的编辑框,登入和退出按钮。
3、利用类向导给用户名和密码的两个编辑框分别关联变量:
m_InUser ,m_InPassword。
4、在给登陆按钮添加消息响应函数OnBnClickedOk(),并添加代码如下:
void CLoginDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
CDialog::OnOK();
//获取用户名和密码
m_InUser.GetWindowText(m_InLoginname);
m_InPassword.GetWindowText(m_Password);
//判断用户名和密码
if((m_Loginname == "")||(m_Password == ""))
{
AfxMessageBox(L"请输入用户名和密码!");
}
else if(m_Loginname == L"lxt" && m_Password == L"123")
{
m_SuccessLogin = true;
this->EndDialog(1);
}
else
{
AfxMessageBox(L"错误的帐号或密码,请重新输入!");
return;
}
}
5、给突出按钮添加消息响应函数OnBnClickedCancel():
void CLoginDlg::OnBnClickedCancel()
{
// TODO: 在此添加控件通知处理程序代码
CDialog::OnCancel();
m_bCancle = true;
}
6、在LoginDlg.h里声明:
BOOL m_bCancle;
BOOL m_SuccessLogin;
7、在LoginDlg.cpp里初始化:
m_bCancle = false;
m_SuccessLogin = false;
8、在CXXXApp.cpp中,将最上边的代码替换成:
p:
CLoginDlg dlg_login; //建立登陆对话框对象
dlg_login.DoModal(); //弹出登陆对话框
if(dlg_login.m_SuccessLogin)
{
CXXXDlg dlg; //建立主应用程序对话框对象
m_pMainWnd = &dlg; //设置dlg为主对话框
INT_PTR nResponse = dlg.DoModal(); //弹出主对话框
if (nResponse == IDOK) //根据主对话框返回值选择操作
{
// TODO: 在此处放置处理何时用“确定”来关闭
// 对话框的代码
}
else if (nResponse == IDCANCEL)
{
// TODO: 在此放置处理何时用“取消”来关闭
// 对话框的代码
}
}
else
{
if(!dlg_login.m_bCancle)
{
goto p;
}
delete(m_pMainWnd);
m_pMainWnd = NULL;
return FALSE;
}