以下新建文档的代码是在点击菜单的一个按钮时相应的。
m_pDocTemplate= new CMultiDocTemplate{
     IDR_MYMENU,
     RUNTIME_CLASS(MYDOC),
     RUNTIME_CLASS(MYFRM),
     RUNTIME_CLASS(MYVIEW),)
CMDIChildWnd *pActiveChild=(CMDIChildWnd*)GetParent();
CDocument *pDoc;
CFrameWnd *m_pFrameWnd;
pDoc=pActiveChild->GetActiveDocument();
m_pFrameWnd=m_pDocTemplate->CreatNewFramee(pDoc,pActiveChild);
m_pDocTemplate->InitialUpdateFrame(m_pFrameWnd,pDoc);
//修改标题栏题目
m_pFrameWnd->SetWindowsText("MySys");//
1 .为什么首次显示该试图的时候显示的
是MySys,而在选择其他的文档视图的时候,就有变成了系统默认的标题
2.重复相应这段代码时,都会产生一个文档视图,怎样控制它,只产生一次。
   我在该代码的前面加上了if(m_pDocTemplate==NULL){return}还是有点问题?

解决方案 »

  1.   

    修改文档的标题和修改对话框的标题不同,应该先在precreatewindow里去调cs的  FWS_ADDTOTITLE;属性,再在oncreate里用setwindowtext改变窗口的标题,如果要改子窗口的title,就要调用doc的settitle()
      

  2.   

    1.你的菜单命令是在视图映射的,一般在App里映射.
    文档模板由于在视图产生而且没有添加到App中文档模板列表中,你这里的m_pFrameWnd只是子框架.所以对应修改的也是子框架的标题.当视图切换时,子框架的标题是与文档关联的,不同视图对应不同标题.
    2.如果要产生一次,查询当前视图是否是你要打开的视图.然后觉得是否新建或不作为;
    查询方法:if(AfxGetMainWnd()->GetActiveView()->IsKindOf(RUNTIME_CLASS(CMyView)))
    return;
    else 
        //创建
        ;