我做了一个基于单文档的mfc工程,想创建一个登录模块,具体做时困难重重,想请教一下做的思路步骤,主要是用户名和密码编辑框的变量定义和登录按钮的消息响应,还有如何使工程在进入单文档界面之前首先调出登录对话框?(我用的是ado访问SQL数据库)
在InitInstance中
CLonginDlg dlg;
if(dlg.DoModal()==IDCANCEL)
{
return FALSE;//直接退出程序
}
在CLonginDlg类的OnOk中
static UINT times=0;
UpdateData();
m_ID.TrimRight();
m_ID.TrimLeft();
m_Password.TrimLeft();
m_Password.TrimRight();
if(m_ID.IsEmpty()||m_Password.IsEmpty())
{
MessageBox("帐号和密码请填写","提示");
return;
}
CString sql;
sql.Format("select PassWord from mypassword where UserID = '%s'",m_ID);
CADO m_ado;
_RecordsetPtr m_Recordset;
_variant_t Varvalue;
try
{
m_ado.ADOinit();
m_Recordset = m_ado.OpenRecordset(sql);//打开记录集
if(m_Recordset->adoEOF)//没有记录
{
MessageBox("用户名不存在!","提示");
times++;
OnErrLongin(times);//这里主要用于显示出错次数.CStatic控件
if(times==3)
{
ExitProcess(0);//直接退出
}
return;
}
Varvalue = m_Recordset->GetCollect((_variant_t)(long)(0));//得到值
CString strResult;
strResult = (char *)(_bstr_t)Varvalue;
strResult.TrimLeft();
strResult.TrimRight();
if(strResult!=m_Password)//取出的密码跟输入的密码匹配
{
MessageBox("密码不正确!","提示");
times++;
OnErrLongin(times);
if(times==3)
{
ExitProcess(0);
}
return;
}
}
catch(_com_error e)
{
MessageBox(e.Description());
}
CDialog::OnOK();