C++ 关闭一个对话框并打开另一个对话框
我正在创建一个登录应用程序。验证用户后,我需要关闭请求验证的对话框,然后打开另一个对话框。我使用资源编辑器创建了另一个对话框主菜单,并使用向导将类添加到其中。我编写的这段代码打开了主菜单对话框,但它是在登录表单中打开的。我需要关闭登录表单并打开主菜单表单C++ 关闭一个对话框并打开另一个对话框,c++,visual-studio,visual-c++,mfc,C++,Visual Studio,Visual C++,Mfc,我正在创建一个登录应用程序。验证用户后,我需要关闭请求验证的对话框,然后打开另一个对话框。我使用资源编辑器创建了另一个对话框主菜单,并使用向导将类添加到其中。我编写的这段代码打开了主菜单对话框,但它是在登录表单中打开的。我需要关闭登录表单并打开主菜单表单 void CMFCApplication1Dlg::OnBnClickedButtonLogin() { // TODO: Add your control notification handler code here CString user
void CMFCApplication1Dlg::OnBnClickedButtonLogin()
{
// TODO: Add your control notification handler code here
CString username, password, user("user"), pass("pass");
c_MainMenu *c1 = new c_MainMenu;
GetDlgItemText(IDC_EDIT_UserName, username);
GetDlgItemText(IDC_EDIT_Password, password);
if (username == user && password == pass){
// this->ShowWindow(SW_HIDE);
c1->Create(IDD_MainMenu);
c1->ShowWindow(SW_SHOW);
}
}
最好从应用程序中打开登录对话框 例如,在
InitInstance()内部
我假设CMFCApplication1Dlg
是模态的,如果是,那么使用EndDialog(IDOK)
。否则,如果它是无模式的,则调用destronWindow()代码>如果您没有以某种特殊方式管理指向对话框的指针,请在PostNcDestroy
中删除指向该对话框的指针,以防止泄漏
现在,如何启动c_主菜单
对话框。如果CMFCApplication1Dlg
是模态,那么如果登录成功,则调用EndDialog(IDOK)
关闭它,否则调用EndDialog(IDCANCEL)
。在打开此对话框的代码中,检查dlg.DoModal()
的返回值,并打开CMFCApplication1Dlg
,如果它是IDOK
事实上,如果您的所有对话框都是模态的,则会容易得多,即:
CMFCApplication1Dlg dlg(IDD_LOGIN);
if (dlg.DoModal() == IDOK) {
c_MainMenu dlg2(IDD_APP);
dlg2.DoModal();
}
CMFCApplication1Dlg dlg(IDD_LOGIN);
if (dlg.DoModal() == IDOK) {
c_MainMenu dlg2(IDD_APP);
dlg2.DoModal();
}