一、添加 基于单文本的登录对话框.
1.建立一个单文本的MFC程序.
2.添加一个对话框.然后添加一个CLoginDialog类public继承CDialog.
此时也会增加两个文件<LoginDialog.h LoginDialog.cpp>
接着添加控件(用户名:登录密码:确定/取消)
添加变量(CString m_strUserName;CString m_strUserPwd;)
直接添加变量:在LoginDialog.h中 BOOL m_bCancle;
并在LoginDialog.cpp初始化函数中添加m_bCancle = false;
添加按钮确定和取消两个函数.
并在取消函数中添加m_bCancle = true;
+++++++++++++++++++++++
3.在 "工程名".h 文件中添加一个 public 的 布尔型变量 BOOL m_bSuccessLogin;//用了识别登录名和密码一致否;
4.在 "工程名"View.cpp 文件中添加 C"工程名"App* pApp = (C"工程名"App*) AfxGetApp();
5."工程名"View.cpp 文件中添加初始化函数OnInitialUpdate()
/////////////////////////////
并在"工程名"View.h中声明变量
CLoginDialog logindlg;
/////////////////////////////
并添加如下代码:
CView::OnInitialUpdate();
// TODO: 在此添加专用代码和/或调用基类
p:
logindlg.m_strUserName = _T("");
logindlg.m_strUserPwd = _T("");
logindlg.DoModal();
if ((logindlg.m_strUserName=="aa")&&(logindlg.m_strUserPwd=="bb"))
{
pApp->m_bSuccessLogin = true;
}
else
{
if (!logindlg.m_bCancle)
{
AfxMessageBox(L"错误的帐号或密码!");
goto p;
}
}
6.修改 LoginTest类中的函数BOOL C"工程名"App::InitInstance()如下所示:
将
// 唯一的一个窗口已初始化,因此显示它并对其进行更新
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
// 仅当具有后缀时才调用 DragAcceptFiles
// 在 SDI 应用程序中,这应在 ProcessShellCommand 之后发生
return TRUE;
替换为:
// 唯一的一个窗口已初始化,因此显示它并对其进行更新
if (m_bSuccessLogin)
{
m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);
m_pMainWnd->UpdateWindow();
// 仅当存在后缀时才调用 DragAcceptFiles,
// 在 SDI 应用程序中,这应在 ProcessShellCommand 之后发生
return TRUE;
}
else
{
delete(m_pMainWnd);
m_pMainWnd = NULL;
return FALSE;
}
最后不要忘了添加一些头文件.
a. 在"工程名"View.cpp中添加
#include "LoginDialog.h"
b. 在"工程名"View.h中添加
#include "LoginDialog.h"
二、添加基于对话框的 登录界面
记得添加登录界面的两个变量:Loginname Password
手动直接添加 BOOL m_bCancle;
并在LoginDialog.cpp初始化函数中添加m_bCancle = false;
添加按钮确定和取消两个函数.
并在取消函数中添加m_bCancle = true;
在CLoginDialog类中添加两个函数:Setloginname() Setpassword()
CString& CLoginDialog::Setloginname(void)
{
//TODO: insert return statement here
return Loginname;
}
CString& CLoginDialog::Setpassword(void)
{
//TODO: insert return statement here
return Password;
}
在"基于对话框_登录界面".cpp 文件中的函数 BOOL C基于对话框_登录界面App::InitInstance()里面
p:
CLoginDialog logindlg;
logindlg.DoModal();
if(logindlg.Setloginname()==L"gwb"&&logindlg.Setpassword()==L"157"){
m_bSuccessLogin=true;
}
else{
if(!logindlg.m_bCancle){
AfxMessageBox(L"错误的帐号或密码!");
goto p;
}
}
if (m_bSuccessLogin){
C基于对话框_登录界面Dlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: 在此放置处理何时用
// “确定”来关闭对话框的代码
}
else if (nResponse == IDCANCEL)
{
// TODO: 在此放置处理何时用
// “取消”来关闭对话框的代码
}
}
else{
delete(m_pMainWnd);
m_pMainWnd = NULL;
return FALSE;
}
另外注意添加头文件喔.在"基于对话框_登录界面".cpp #include "LoginDialog.h"
还有变量声明喔.在在"基于对话框_登录界面".h BOOL m_bSuccessLogin;