1.在登录界面,输入正确的用户名和密码。然后验证通过了。
2.然后关闭登录界面,调用另外一个界面2,我用如下代码:SendMessage(WM_CLOSE); //试图关闭登录界面
CMyDlg dlg;
int i = dlg.DoModal(); //试图显示界面2现在的问题是:所需要显示的界面2显示不出来,而且登录界面也关闭不了,请问这是什么原因?谢谢。

解决方案 »

  1.   


    一个思路,可以参考一下:说明:MFC对话框工程,有两个对话框,1是登录对话框(主对话框),2是操作对话框(子对话框)。
    1、程序运行,显示登录对话框,也是程序的主对话框;2、用户输入用户名和密码,点按钮进行验证;3、如果验证通过,隐藏登录对话框,打开操作对话框;4、用户在操作对话框中操作;5、用户关闭操作对话框,返回到主对话框,这时可以关闭主对话框了。程序:void CTestDlg::OnButton1() 
    {
    // TODO: Add your control notification handler code here
    ......
    // 以上是登录操作,登录成功后执行下面的代码
    // 首先隐藏登录对话框
    ShowWindow(SW_HIDE); // 显示操作对话框
    CDialog2 dig2;
    dig2.DoModal(); // 操作对话框关闭后,如果不需要显示登录对话框,那就直接关闭登录对话框
    EndDialog(IDOK);
    }
      

  2.   

    void CTestDlg::OnButton1()  

    // TODO: Add your control notification handler code here 
    ...... 
    // 以上是登录操作,登录成功后执行下面的代码 
    // 首先隐藏登录对话框 
    ShowWindow(SW_HIDE); 

    // 显示操作对话框 
    CDialog2 dig2; 
    dig2.DoModal(); 

    // 操作对话框关闭后,如果不需要显示登录对话框,那就直接关闭登录对话框 
    EndDialog(IDOK); 
    }
      

  3.   

    登录界面和界面2都是在同一个工程里的两个MFC的对话框。原先界面2是工程的启动后的主界面。现在我修改了工程的主cpp文件,将启动界面设置为了界面2(用户,密码验证界面),为的就是加一个验证,然后再显示主界面。
      

  4.   

    顺路问下,如果直接用一个dlg.domodal来当登陆对话框,在登陆对话框判断,正确则返回为OK。这样做有哪些坏处呢?
      

  5.   

    用一个dlg.domodal来当登陆对话框,在登陆对话框判断,正确则返回为OK,显示主程序;否则退出。