有一个登录框,当用户输入错误时,如何让程序重新回到登录界面...具体请看.

islyb5001 2003-08-21 10:52:59
当用户输入用户名或者密码错误时,我不想让用户登录,也不想退出,还是想显示那个登录框,让用户继续可以输入用户名和密码,不想用goto语句回到那个所谓的
GO_1:
//显示登录窗口
CUserloginDlg dlg;
if (dlg.DoModal() == IDOK) {}
该如何很好地处理这样的事情,请写出代码,或者给我例子.谢谢
...全文
185 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
wj59 2003-08-21
  • 打赏
  • 举报
回复
关键是不要CDialog::OnOK();CDialog::OnCancel();

karlson0211 2003-08-21
  • 打赏
  • 举报
回复
同上,上面已经非常详细了
lygfqy 2003-08-21
  • 打赏
  • 举报
回复
重载也,加个判断轻松搞定
bluestar 2003-08-21
  • 打赏
  • 举报
回复
不想退出
在OnOK里return
在OnCancel里也return
碍踢工匠 2003-08-21
  • 打赏
  • 举报
回复
CUserloginDlg dlg;
BOOL bRight=FALSE;

while(!bRight&&dlg.DoModal() == IDOK)
{
if(...)//要退出
bRight=TRUE;
}
Viconia 2003-08-21
  • 打赏
  • 举报
回复
可以判断用户密码,如果正确就调用EndDialog(IDOK);
ssfly 2003-08-21
  • 打赏
  • 举报
回复
void CLoginDlg::OnOK()
{
// TODO: Add extra validation here
UpdateData();

if(IsTrue(m_userID,m_userPwd))
{
CDialog::OnOK();
}
else
AfxMessageBox("登录信息不正确!");
}

IsTrue为一个判断用户名、密码是否正确的函数
  • 打赏
  • 举报
回复
当你有多个用户时.
你可用一个数组arrUser存储用户名,一个数组arrPassword存储密码
查找用户的输入的用户名和密码在你的数组中的序号是否相同
用户名没有找到返回 -1
密码没有找到返回 -2
  • 打赏
  • 举报
回复
void CDlgDlg::OnOK()
{
UpdateData();
if("user" == m_user && "" == m_password)
CDialog::OnOK();
}
假如只有一个用户user

密码为空
sunheroshang 2003-08-21
  • 打赏
  • 举报
回复
在对话的OnOK函数中,把向导添加的CDialog::OnOK();删除

if(用户名和密码正确)
{
CDialog::OnOK();
}
else
{
AfxMessageBox("用户名和密码错误");
}
akun 2003-08-21
  • 打赏
  • 举报
回复
在CUserloginDlg 里面重载 On button click 确定按钮, 如果用户名和密码不对,就不要执行OnOK, OnCancel之类的函数,返回....
  • 打赏
  • 举报
回复
OnOk()中加:
if(用户输入用户名或者密码错误)
return ;
不执行CDialog::OnOK
  • 打赏
  • 举报
回复
是提问题人:我如果没有删除系统自动生成的确定按钮,而是只是用
CUserloginDlg dlg;
if (dlg.DoModal() == IDOK)

在资源管理器中双击ok按钮
将我的代码加进去
就行了
vcforever 2003-08-21
  • 打赏
  • 举报
回复
在你DoModal的那个对话框的OnOK函数中加上
if(输入符合条件){
do something
}
else
return;

devil97518 2003-08-21
  • 打赏
  • 举报
回复
yes,so many solutions!
zhucde 2003-08-21
  • 打赏
  • 举报
回复
呵呵,没有必要再谈论这个问题了,
因为这个问题已经被这么多人解决了
fengqinggao 2003-08-21
  • 打赏
  • 举报
回复
如果你非要在对话框的外面处理,就这样吧:
CUserloginDlg dlg;
while(1)
{
if(dlg.DoModal() == IDOK)
{
//m_sName和m_sPsw是对应于对话框上用户名和密码的两个文本框的映射变量;
if(CheckUserRights(dlg.m_sName, dlg.m_sPsw))
break;
}
else
return FALSE;
}

其实在对话框里处理要容易得多,就像前面各位所说的,都很好,而且还可以确定如果是用户名错了,将焦点定位到用户名文本框,如果是密码错误,可以将焦点定位到密码文本框,并且已经输入的信息还保留了,使其全部选中,比较专业。

我的这种方法只是在你非要在对话框外处理的一个不得已的方法。
islyb5001 2003-08-21
  • 打赏
  • 举报
回复
我是提问题人:我如果没有删除系统自动生成的确定按钮,而是只是用
CUserloginDlg dlg;
if (dlg.DoModal() == IDOK)
我怎么来处理呢?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧