各位大虾,小弟欲编写一视频分析统计软件,想用多文档程序实现,刚上手就遇到问题了,首先是我如何能够实现如程序自带的“新建”菜单中的打开一个子窗口的功能;其次是我想实现打开不同类型的子窗口,如我有视频窗口,显示数据库的表格窗口,以及分析结果的图形窗口...。我自己已经琢磨了一阵子了,也没有得出满意的结果,望各位大虾指点,不甚感激!

解决方案 »

  1.   

    Dynamically Create Different Views for SDI Projects
    http://www.codeguru.com/cpp/w-d/doc_view/viewmanagement/article.php/c6121/
      

  2.   

    这个是多文档示例http://www.vckbase.com/document/viewdoc/?id=691
      

  3.   

    在应用程序类中调用OnFileNew函数。也可以直接调用文档模板类的OpenDocumentFile函数,第1参数给0。
      

  4.   


    第一个示例只是演示了动态创建不同的view,如果要同时显示多个view,MDI 更方便一些,建议用多文档
      

  5.   

    需要区分的是:
    1.sdi处理的是单文档,但是可以分为多个视图view,不同视图展示不同文档内容;
    2.mdi处理的是多个不同文档.典型例子有word,可以开多个窗口,每个窗口处理一个文档,但是,文档之间可以通过剪贴板交互.
      

  6.   

    想创建哪一套,就用哪个模板指针来调用OpenDocumentFile函数。模板指针可以作为成员变量保存在App类里面,也可以动态获取。
      

  7.   

    cnzdgs:    你好,能告知怎么动态获取吗,试了试还是没有搞明白,谢谢。
      

  8.   

    用App类的GetFirstDocTemplatePosition、GetNextDocTemplate函数可以获取所有模板指针。
    此外,用文档类的GetDocTemplate函数可以得到该文档所属的模板指针。
      

  9.   

    恕小弟愚钝,请看如下代码为何str的值总是为空(str = ""),谢谢了:
    CMultiDocTemplate* pVideoTemplate;
    pVideoTemplate = new CMultiDocTemplate(
    IDR_MAINFRAME,
    RUNTIME_CLASS(CVideoDoc),
    RUNTIME_CLASS(CVideoFrame),
    RUNTIME_CLASS(CVideoView));
    AddDocTemplate(pVideoTemplate);void CMainFrame::OpenVideoWnd()
    {
    POSITION curTemplatePos = ((CTacAnalysisApp*)AfxGetApp())->
    GetFirstDocTemplatePosition(); while(curTemplatePos != NULL)
    {
    CDocTemplate* curTemplate =((CTacAnalysisApp*)AfxGetApp())->
    GetNextDocTemplate(curTemplatePos); CString str; curTemplate->GetDocString(str, CDocTemplate::docName); if (str == _T("Video"))
    {
    curTemplate->OpenDocumentFile(NULL);
    return;
    }

    }
      

  10.   

    你的String Table资源中,IDR_MAINFRAME对应的内容是什么?GetDocString(str, CDocTemplate::docName)取的是第1个\n和第2个\n之间的内容。