1. 创建登录对话框,在默认的确定按钮事件中写如下代码:
void LoginDlg::onBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
CString user, pwd;
m_user.GetWindowTextW(user);
m_pwd.GetWindowTextW(pwd);
if (user.IsEmpty() || pwd.IsEmpty())
{
MessageBox(_T("请不要将任何一者置空!"));
return;
}
if (user.Compare(_T("admin")) && user.Compare(_T("prof")))
{
MessageBox(_T("用户名错误!"));
return;
}
if (user.Compare(_T("admin")) == 0)
{
jurisdiction = _T("admin");
if (pwd.Compare(_T("111")) == 0)
{
Pmain->power();
if (Pmain->isExit.Compare(_T("yes")) == 0)
{
Pmain->ShowWindow(SW_SHOW);
}
CDialogEx::onOK();
}
else
{
MessageBox(_T("密码错误!"));
return;
}
}
if (user.Compare(_T("prof")) == 0)
{
jurisdiction = _T("prof");
if (pwd.Compare(_T("111111")) == 0)
{
Pmain->power();
if (Pmain->isExit.Compare(_T("yes")) == 0)
{
Pmain->ShowWindow(SW_SHOW);
}
CDialogEx::onOK();
}
else
{
MessageBox(_T("密码错误!"));
return;
}
}
CDialogEx::onOK();
}
在主对话框的初始化函数中填写如下:
m_log.DoModal();
那么在主对话框显示前会先弹出登录对话框
2. 两个菜单项
在两个菜单的退出按钮对应的事件中添加如下:
isExit = _T("yes");
Pmain->CloseWindow();
m_log.DoModal();
两个退出事件的函数添加的都是一样的。
3.主对话框的 power 函数定义如下:
void CMenuDlg::power()
{
if (!m_log.jurisdiction.Compare(_T("admin"))) //显示默认 log是登录对话框的object
{
// SetMenu(NULL);
CMenu m_menu1;
m_menu1.LoadMenu(IDR_MENU1);
SetMenu(&m_menu1);
}
if (!m_log.jurisdiction.Compare(_T("prof"))) //显示窗口 2
{
// SetMenu(NULL);
CMenu m_menu1;
m_menu1.LoadMenu(IDR_MENU2);
SetMenu(&m_menu1);
}
};
4. 登录对话框的初始化函数中添加如下:
m_user.InsertString(0, _T("admin"));
m_user.InsertString(1, _T("prof"));
m_user.SetCurSel(0);
效果图:
单击退出,切换用户登录
显示如下



