我建立了一个单文档程序,想在里面加一个登入模块,登入模块的代码我已经写好了,我想问一下,在程序的什么地方加一些什么语句可以让我的程序先运行登入对话框,再等我登入后运行主程序。谢谢

解决方案 »

  1.   

    CXXApp::InitInstance()
    {
     CXDlg dlg;
     dlg.domodal();
    }
      

  2.   

    如果登入没有成功,在CXXDlg 类中定义一个判断成功与否的函数,
    然后
     if(!dlg.isSucess())
    {
       return FALSE ;
    }
    程序就会自动退出
      

  3.   

    这个只需要在你的APP类的InitInstance()函数里添加代码如下,
    先添加一个登录的对话框并生成相应对话框类CLoginDlg,至于对于登录成功与否的验证,你可以登录对话框的“登录“按钮点击事件中去处理,也可以从对话框中取得相关参数后在InitInstance()函数中去做验证,如果不通过直接return FALSE;即可。
    BOOL CTestApp::InitInstance()
    {
    InitCommonControls(); CWinApp::InitInstance();
    AfxEnableControlContainer();

    CLoginDlg dlg;
    if(dlg.DoModal() != IDOK)//这里是弹出登录对话框
    return FALSE; SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
    LoadStdProfileSettings(4);  // 加载标准 INI 文件选项(包括 MRU)
    // 注册应用程序的文档模板。文档模板
    // 将用作文档、框架窗口和视图之间的连接
    CSingleDocTemplate* pDocTemplate;
    pDocTemplate = new CSingleDocTemplate(
    IDR_MAINFRAME,
    RUNTIME_CLASS(CMobilePhoneMsgDoc),
    RUNTIME_CLASS(CMainFrame),       // 主 SDI 框架窗口
    RUNTIME_CLASS(CMobilePhoneMsgView));
    if (!pDocTemplate)
    return FALSE;
    AddDocTemplate(pDocTemplate);
    // 分析标准外壳命令、DDE、打开文件操作的命令行
    CCommandLineInfo cmdInfo;
    ParseCommandLine(cmdInfo);
    // 调度在命令行中指定的命令。如果
    // 用 /RegServer、/Register、/Unregserver 或 /Unregister 启动应用程序,则返回 FALSE。
    if (!ProcessShellCommand(cmdInfo))
    return FALSE;
    // 唯一的一个窗口已初始化,因此显示它并对其进行更新
    m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);
    m_pMainWnd->UpdateWindow();
    // 仅当存在后缀时才调用 DragAcceptFiles,
    //  在 SDI 应用程序中,这应在 ProcessShellCommand  之后发生
    return TRUE;
    }