在VC6.0 MFC SDI 环境下:
我编写了一个程序, 现在为这个程序设计了一个"登陆对话框". 为了使这个对话框始终保持在程序运行时的第一时间显示,
我在CXXXApp::InitInstance()写入了如下代码:CXXXApp::InitInstance()
{
//...... CLoginDlg login; //CLoginDlg 是"登陆对话框"
if(login.DoModal() != IDOK)
{
return FALSE; //用户单击取消时, 退出. 这句好理解
} //...... // 以下是MFC 的源码:
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CSolarControlSystemDoc),
RUNTIME_CLASS(CMainFrame), // main SDI frame window
RUNTIME_CLASS(CSolarControlSystemView));
AddDocTemplate(pDocTemplate);
}我的问题是: 当程启动"登陆对话框"时, 为什么当我单击了"确定"的时候, 程序会自动进入单文档视图的界面, 我并没有写
"确定" if(login.DoModal() == IDOK) 的代码呀, 我只写了if(login.DoModal() != IDOK)"取消"的代码, 请各位
高手告诉我, 如果配有 IDOK 的内部源码就更好, 谢谢各位!
我编写了一个程序, 现在为这个程序设计了一个"登陆对话框". 为了使这个对话框始终保持在程序运行时的第一时间显示,
我在CXXXApp::InitInstance()写入了如下代码:CXXXApp::InitInstance()
{
//...... CLoginDlg login; //CLoginDlg 是"登陆对话框"
if(login.DoModal() != IDOK)
{
return FALSE; //用户单击取消时, 退出. 这句好理解
} //...... // 以下是MFC 的源码:
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CSolarControlSystemDoc),
RUNTIME_CLASS(CMainFrame), // main SDI frame window
RUNTIME_CLASS(CSolarControlSystemView));
AddDocTemplate(pDocTemplate);
}我的问题是: 当程启动"登陆对话框"时, 为什么当我单击了"确定"的时候, 程序会自动进入单文档视图的界面, 我并没有写
"确定" if(login.DoModal() == IDOK) 的代码呀, 我只写了if(login.DoModal() != IDOK)"取消"的代码, 请各位
高手告诉我, 如果配有 IDOK 的内部源码就更好, 谢谢各位!
解决方案 »
- 关于 vc程序和java程序socket通讯
- 在关于对话框中的程序图标~
- 请教:关于EN_PROTECTED通知消息的问题
- 我装有graphics库函数啊,但是我编写图形程序时总是说不能打开graphics.h?
- 在录制屏幕,保存成文件的同时,如何实现读该文件,实现播放的功能
- 怎么让CFORMVIEW的控件在ONSIZE时随之变化.?
- *************VC初学者的问题***********
- 如果不用多线程的方法,能否在程序循环中处理windows消息?谢谢
- 如何用SQL语句生成允许内容为空的文本型字段?
- 谁有拟合曲线的算法,例程?欢迎讨论相关技术。
- 在线急等,完成端口(IOCP)问题
- 请问卸载USB之前怎么判断USB中是否有文件操作如文件被打开了?
我是在单文档应用程序下写的, 我的原意是想在
if(login.DoModal() == IDCANCEL)
{
return FALSE; //用户单击取消时, 退出.
}
if(login.DoModal() == IDOK)
{
//当用户单击"确定"时, 应当进入主程序界面, 请问这里填什么?
}感谢每一位帮助我的人, 谢谢你!
也可以处理一下你的输入if(login.DoModal() == IDOK)
{
//当用户单击 "确定 "时, 应当进入主程序界面, 请问这里填什么?
}
if(login.DoModal() == IDOK)
{
//当用户单击"确定"时, 应当进入主程序界面, 请问这里填什么?
}那么结果是: 我要单击2次"确定"才能进入主程序, 为什么要单击2次呢?
第1次单击之后没有任何反应是因为我在if(login.DoModal() == IDOK) 里什么都没有写,
至于第2次单击之后为什么就能直接进入主程序我就不知道, 请高手告诉..我的目的是要在用户单击"确定"之后, 弹出一个对话框然后再进入主程序界面:
if(login.DoModal() == IDOK)
{
AfxMessageBox("成功登陆");
//这下面就要写登陆主程序界面的代码了, 不知道怎样写
//当用户单击"确定"时, 应当进入主程序界面, 请问这里填什么?
}
if(login.DoModal() != IDOK)
{
return FALSE; //用户单击取消时, 退出. 这句好理解
} AfxMessageBox( "成功登陆 ");
//--------------
这样试试看
不过我打算把验证密码写在CLoginDlg的OnOK()函数里, 如下:我在CLoginDlg的OnOK()函数里面这样写:
void CLoginDlg::OnOK()
{
if(0 == m_userName.GetCurSel()) //当用户选中 Admin 的时候
{
CString accessPwd, userEnter_Pwd;
//accessPwd 是找出Access里的密码, userEnter_Pwd是用户输入编辑框里的密码
accessPwd = conn_Access.ReadPwd(); //读取出Access里的密码
m_userPwd.GetWindowText(userEnter_Pwd); //获取出用户在编辑框里输入的密码
if(accessPwd != userEnter_Pwd)
{
MessageBox("管理员Admin密码错误!");
//当用户输入的密码与Access数据里的密码验证不一样时, 应该不能登陆, 并要返回对话框的界面
//那么这里应该怎样填?
//就写在这里....
}
}
CDialog::OnOK();
}请再帮忙帮忙, 谢谢!
"确定 " if(login.DoModal() == IDOK) 的代码呀,
=====================
你写的是if(login.DoModal()==IDCANCEL)
当你单击“确定”时,上面条件不成立,所以跳过去了,那么接下来不就是继续执行吗?