当前位置:编程学习 > VC++ >>

如何用VC6.0的SDI实现两个文档模板

 

 

 

---- 当前,用AppWizard新建的支持文档/视的SDI项目,只含有从CWinApp,

CFrameWnd,CDocument,CView或CView的子类派生的4个类,在CWinApp的

InitInstance函数中只实现了一个管理文档/普通视的文档模板.

 

---- 若想实现管理文档/滚动视,及管理文档/两行一列可编辑分隔器这样

两个文档模板,只需做:

 

---- (1) 用AppWizard新建名为T2的支持文档/视的SDI项目,建立的最后

一步,选择CScrollView派生视类.

 

---- 建立完后,此项目的文件名及类名为:

 

    T2App.h,T2App.cpp: 含CT2App类的声明及实现

    MainFrame.h,MainFrame.cpp:

含CMainFrame类的声明及实现

    T2Doc.h,T2Doc.cpp: 含CT2Doc类的声明及实现

    T2View.h,T2View.cpp: 含CT2View类的声明及实现

(2) 用ClassWizard从CFrameWnd生成名为F2的框架类,从CEditView生成名

为V的视类.

 

---- (3) 新建一菜单,其ID值为M2,然后新建一串表条目,其ID,VALUE,

CAPTION域分别等于M2,M2的值(在resource.h可找到)," TEMPLATE2".

 

---- (4) 在CWinApp.cpp中,加入#include "F2.h"及#include "V.h".

 

---- 在InitInstance函数的AddDocTemplate(pDocTemplate)语句后,加入以

下语句,以生成 与M2菜单及串表相关的第2个文档模板:

 

pDocTemplate=new CSingleDocTemplate(

        M2,

        RUNTIME_CLASS(CT2Doc),

        RUNTIME_CLASS(F2),

        RUNTIME_CLASS(V));

    AddDocTemplate(pDocTemplate);

---- (5) 在F2.h中,加入成员变量private:

CSplitterWnd m_splitter;在F2.cpp中,加入 #include "V.h".

 

---- 重载框架类F2的成员函数F2::OnCreateClient:

 

    CRect rc;

    GetClientRect(&rc);

    m_splitter.CreateStatic(this,2,1);

//建立两行一列分隔器

    m_splitter.CreateView(0,0,pContext- >

m_pNewViewClass,CSize

    (rc.Width(),rc.Height()/2),pContext);

   

    m_splitter.CreateView(1,0,RUNTIME_CLASS

(V),CSize(0,0),pContext);

    SetActiveView((CView*)m_splitter.GetPane(0,0));

    return TRUE;

---- 初启此SDI,或用户点击了"文件"- >"新建"菜单项时,将出现要求选定

模板类型的"新建"对话框,选定"T2"将运行滚动视模板,而点击"TEMPLATE2"

将运行两行一列可编辑分隔器模板.

 

---- 要使滚动视中的水平和垂直滚动条可见,可在CT2View::OnInitialUpdate()

中,将sizeTotal.cx,sizeTotal.cy置为大于600的值.

 

---- 对支持文档/视的MDI项目,可照搬以上的做法,但要从CMDIChildWnd派

生F2框架类.初启此MDI时,不会出现"新建"对话框,这点与SDI不同.仅当用户

点击了"文件"- >"新建"菜单 项时,才会出现"新建"对话框.

补充:软件开发 , Vc ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,