在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 的内部源码就更好, 谢谢各位!

解决方案 »

  1.   

    各位高手:
       我是在单文档应用程序下写的, 我的原意是想在
        if(login.DoModal() == IDCANCEL) 
        { 
            return FALSE;   //用户单击取消时, 退出.
        } 
        if(login.DoModal() == IDOK) 
        {
            //当用户单击"确定"时, 应当进入主程序界面, 请问这里填什么?
        }感谢每一位帮助我的人, 谢谢你!
      

  2.   

    ==IDOK程序就没有返回,继续执行下去了.我是菜鸟,混分的
      

  3.   

    我打字很慢,没看到.里面不用写就可以继续执行下去了.
    也可以处理一下你的输入if(login.DoModal()   ==   IDOK)   
            { 
                    //当用户单击 "确定 "时,   应当进入主程序界面,   请问这里填什么? 
            } 
      

  4.   

    楼上的朋友, 感谢你的参与, 感谢你的帮助, 但是问题没有解决.如果我这样写:
    if(login.DoModal() == IDOK)       
    {   
    //当用户单击"确定"时, 应当进入主程序界面, 请问这里填什么?   
    }那么结果是: 我要单击2次"确定"才能进入主程序, 为什么要单击2次呢?
    第1次单击之后没有任何反应是因为我在if(login.DoModal() == IDOK) 里什么都没有写,
    至于第2次单击之后为什么就能直接进入主程序我就不知道, 请高手告诉..我的目的是要在用户单击"确定"之后, 弹出一个对话框然后再进入主程序界面:
    if(login.DoModal() == IDOK)       
    {
        AfxMessageBox("成功登陆");
        //这下面就要写登陆主程序界面的代码了, 不知道怎样写
        //当用户单击"确定"时, 应当进入主程序界面, 请问这里填什么?   
    }
      

  5.   

    单击2次,是因为你调用了2次//-----------
    if(login.DoModal()   !=   IDOK) 

            return   FALSE;   //用户单击取消时,   退出.   这句好理解 
    } AfxMessageBox( "成功登陆 "); 
    //--------------
    这样试试看
      

  6.   

    楼上的朋友真感谢你..
    不过我打算把验证密码写在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();
    }请再帮忙帮忙, 谢谢!
      

  7.   

      为什么当我单击了 "确定 "的时候,   程序会自动进入单文档视图的界面,   我并没有写 
    "确定 "   if(login.DoModal()   ==   IDOK)   的代码呀, 
    =====================
    你写的是if(login.DoModal()==IDCANCEL)
    当你单击“确定”时,上面条件不成立,所以跳过去了,那么接下来不就是继续执行吗?