TOP

如何用VC6.0的SDI实现两个文档模板
2014-11-23 20:10:51 】 浏览:9385
Tags:何用 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不同.仅当用户

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


如何用VC6.0的SDI实现两个文档模板 https://www.cppentry.com/bencandy.php?fid=55&id=16844

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇利用Visual C++/MFC开发Windows程.. 下一篇在VC++6.0开发中实现全屏显示