我上在在多文档窗口下编程的,我在CChildFrame类中设置视图类为不可关闭,也就是视图窗口右上角的关闭按钮不可用,但是我自己新添加了一个视图类,它是从CSrollView继承下来的,我想让他具有关闭按钮功能,请问如何实现!急!

解决方案 »

  1.   

    新派生一个CMDIChildWnd。class CMyChildFrame : public CMDIChildWnd
    {
        ....
    }然后在InitInstance里:   CMultiDocTemplate* pDocTemplate;
       pDocTemplate = new CMultiDocTemplate(
          IDR_MYTYPE,
          RUNTIME_CLASS(CMyDoc),
          RUNTIME_CLASS(CMyChildFrame),   // 自定的MDI子窗口
          RUNTIME_CLASS(CMyView));
       AddDocTemplate(pDocTemplate);
      

  2.   

    楼上的好像是多添了一个模版,但是MDI子窗口的风格已经没有关闭按钮了,这样行吗?
      

  3.   

    方法1.添加模板方法,用两个childframe,一个可以关闭,一个不可以.
    方法2.一个childframe,在WM_SYSCOMMAND中判断哪个视图,然后选择可否关不关闭
      

  4.   

    CMultiDocTemplate( UINT nIDResource, CRuntimeClass* pDocClass, CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass );CMultiDocTemplate的第三入参,就是MDI子窗口Frame。
    不同Document可以有自己的MDIChildFrame风格。e.g: (注意两个CMultiDocTemplate的第三入参)   CMultiDocTemplate* pDocTemplate1;
       pDocTemplate1 = new CMultiDocTemplate(
          IDR_MYTYPE1,
          RUNTIME_CLASS(CMyDoc1),
          RUNTIME_CLASS(CChildFrame),   //没有关闭按钮的Frame
          RUNTIME_CLASS(CMyView1));
       AddDocTemplate(pDocTemplate1);   CMultiDocTemplate* pDocTemplate2;
       pDocTemplate2 = new CMultiDocTemplate(
          IDR_MYTYPE2,
          RUNTIME_CLASS(CMyDoc2),
          RUNTIME_CLASS(CMyChildFrame),   //新派生的ChildFrame(有关闭按钮的Frame)
          RUNTIME_CLASS(CMyView2));
       AddDocTemplate(pDocTemplate2);