用MFC建立好一个登录对话框1和另外一个对话框2,怎样在1中点ok登陆成功后跳转到2对话框

时间:2022-11-09 18:16:29
应该是在这里面修改的吧
void CDlg_login::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
    try
{
m_Pconn.CreateInstance(__uuidof(Connection));
CString SQL=_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=stu.mdb");
m_Pconn->Open((_bstr_t)SQL,"","",adModeUnknown);
}
catch(_com_error e)
{
MessageBox(_T("数据库连接失败"));
}
try
{
m_Precord.CreateInstance(__uuidof(Recordset));
CString sql1("select * from login where login_name=\"");
CString SQL= sql1 + m_login_name + "\" and login_pwd=\"" + m_login_pwd + "\"";
m_Precord->Open((_variant_t)SQL,_variant_t(m_Pconn,true),adOpenStatic,adLockOptimistic,adCmdText);
int n = m_Precord->GetRecordCount();
        if(n)
{


CCommandLineInfo cmdInfo;
AfxGetApp()->ParseCommandLine(cmdInfo);


if (!AfxGetApp()->ProcessShellCommand(cmdInfo))
return;


AfxGetApp()->m_pMainWnd->ShowWindow(SW_SHOW);
AfxGetApp()->m_pMainWnd->UpdateWindow();
CDialog::OnOK();

}
else
{
MessageBox(_T("密码错误"));
}
m_Precord->Close ();
m_Pconn->Close ();
m_Precord=NULL;
m_Pconn=NULL;
}
catch(_com_error e)
{
MessageBox(_T("连接有误"));
}
UpdateData(FALSE);

}

4 个解决方案

#1


先构造一个对话框资源,在为这个资源生成一个类,然后在调用这个对话框的显示函数


void CDialogDlg::OnOK() 
{
// TODO: Add extra validation here
CMyDialog my;
my.DoModal( );
CDialog::OnOK();
}

#2


新建的类应该去什么名字,用什么基类

#3


很有启发,谢谢

#4


引用 1 楼 youkuxiaobin 的回复:
先构造一个对话框资源,在为这个资源生成一个类,然后在调用这个对话框的显示函数
C/C++ code?1234567void CDialogDlg::OnOK() {    // TODO: Add extra validation here    CMyDialog my;    my.DoModal( );    CDialog::OnOK();}



这个OnOk要放到前面,不然DoModal消息循环,不关闭就执行不了OnOk

#1


先构造一个对话框资源,在为这个资源生成一个类,然后在调用这个对话框的显示函数


void CDialogDlg::OnOK() 
{
// TODO: Add extra validation here
CMyDialog my;
my.DoModal( );
CDialog::OnOK();
}

#2


新建的类应该去什么名字,用什么基类

#3


很有启发,谢谢

#4


引用 1 楼 youkuxiaobin 的回复:
先构造一个对话框资源,在为这个资源生成一个类,然后在调用这个对话框的显示函数
C/C++ code?1234567void CDialogDlg::OnOK() {    // TODO: Add extra validation here    CMyDialog my;    my.DoModal( );    CDialog::OnOK();}



这个OnOk要放到前面,不然DoModal消息循环,不关闭就执行不了OnOk