请教各位大侠:
我想在基于对话框的应用程序中,动态创建一个单文档(包括Frame、Document和View)窗口,应该如何做?比方说,在我的对话框上有一个按钮,我点击按钮,就应该弹出一个基于单文档的窗口。请各位不吝赐教,谢谢!

解决方案 »

  1.   

    这是反其道而行吧?但还是可以的.前提是你一开始不能建立为对话框程序,而是选择单文档程序.然后你在你的单文档程序的初始化函数中,显示你的对话框(对系统登录对话框)用户输入了正确的密码了才放行,否则返回:
    就是在你以下函数中:
    BOOL CXXXApp::InitInstance()
    {
        .....
        //前面做好一切正常工作,如果没有这个对话框,就能直接显示单文档主窗口了.但你要先显示对话框,所以在倒数几行里加入:   //此处打开登录系统对话框
    CLoginDlg LoginDlg;
    if (LoginDlg.DoModal()==IDOK) //---------你验证密码的工作都在对话框中完成,正确了就返回IDOK,否则不管.
    {
              //这里不用代码,直接放行 -------------------- 这里不用代码
    }
    else //没有正确登录
    {
              return FALSE;
    }这样就能运行到最后二行:
    // The main window has been initialized, so show and update it.
    pFrame->ShowWindow(SW_SHOWMAXIMIZED);
    pFrame->UpdateWindow();
    return TRUE;
      

  2.   

    To TianChong:
    非常感谢你的指点。我尝试过了,你的方法是可行的。恕我经验浅薄,想再讨教一个问题:
    我是按照下面的方式在对话框中动态生成单文档窗口的://……
    CSingleDocTemplate* pDocTemplate = new CSingleDocTemplate
    (
    IDR_MAINFRAME,
    RUNTIME_CLASS(CMyDoc),
    RUNTIME_CLASS(CMyFrame),
    RUNTIME_CLASS(CMyView)
    );
    pDocTemplate ->OpenDocumentFile(NULL);
    //……
    我现在想给CMyFrame添加自定义的构造函数,期望通过构造函数在创建CMyFrame对象时添加一些外部信息。然而,通过上面的创建方式无法达到我的要求。请教TianChong以及各位大侠,是否有解决之道?谢谢