在基于对话框模式中,如何先显示登录对话框,当输入正确后才显示主窗口,当输入错误时就继续显示登录对话框!这样如何实现!急!
解决方案 »
- JPG 转 AVI
- 很有意思的两道题,大家进来看看。
- 一个exe上放两个相同activex控件的问题
- Sendmessage是不是在消息相应函数执行完,才返回——————?
- 怎样在单机环境调试通信程序,请高手指教
- 如何获得当前显示模式
- Shell_NotifyIcon中NIF_INFO的用法
- CFrameWnd::OnIdleUpdateCmdUI()是什么意思?
- 急救啊~~~大虾们,win2000 professional下面有没有办法能安装sql server2000标准版???
- 太奇怪了,一个像素值,怎么就影响了整个窗口的效果?
- 高手赐教: MFC Extention DLL没有头文件和库文件,如何使用之
- 如何在非XP系统上开发具有XP风格界面的程序呢?
domodal一个登陆对话框
Logon dlg;
if ( dlg.DoModal() != IDOK )
exit(0);类似的代码,具体密码错误甚么的还是得靠你自己解决了
for(int i = 1 ; i < 4; ++ i)////这里4表示用户只能连续输入4次尝试
{
if (dlg.DoModal() == IDOK)
{
strncpy(chName, dlg.m_EditName, 256);
strncpy(chPWD, dlg.m_EditPwd, 256);
bool bPass = false;
////比较用户密码正确性
if (! bPass
{
if (i < 3 + 1)
{
if (i < 3)
{
AfxMessageBox("用户名或密码错误,请重试。");
continue;
}
else
return 0;
}
else
//AfxMessageBox("您的用户权限错误,不能继续。");
return 0;
}
else
//break;
return 1; }
else
{
//theApp.m_pMainWnd;->SendMessage(WM_CLOSE);
return -1;
}
}
先打开登录对话框,登录成功后关掉,然后再打开主对话框。
比如在OnOK这里,发送登录消息,然后不调用CDialog::OnOK(),一直等消息。如果接收登录成功,直接OnOK,如果不成功,提示是否重试或退出。
里调用对话框验证用户,成功GOON
失败RETRUN继续验证
做个3次的循环,调用登录对话框的DoModal,如果其中一次登录成,跳出循环,继续;如果三次都不成,return FALSE
当密码输入错误时,再返回运行dlg.DoModal() == IDOK时,程序就会出错了!"重试"后,程序就会跟进这里:
BOOL CGdiObject::Attach(HGDIOBJ hObject)
{
ASSERT(m_hObject == NULL); // only attach once, detach on destroy
if (hObject == NULL)
return FALSE;
CHandleMap* pMap = afxMapHGDIOBJ(TRUE); // create map if not exist
ASSERT(pMap != NULL);
pMap->SetPermanent(m_hObject = hObject, this);
return TRUE;
}
是什么原因呢?请指点!
因为你并没有要求次数
去登陆对话框中响应按钮事件
如果正确就cdialog::onok()
否则,警告出错,
退出登录对话框就是cdialog::onok()