多文档界面(MDI)系统框架-C#完整版(三)(UML图)[vjsdn]

 现附上系统UML类图及逻辑关系图

2010072311052225.png

多文档界面系统框架由3个模块组成:主程序,系统接口定义及类库。
2010072311055840.png 

 MDI框架逻辑视图关系图。由此可见父窗体(MDI Main Form)可以控件所有类。

2010072311065156.png

所有子窗体都实现IMdiChildForm接口,由frmBaseChild类实现接口,派生出3个实体类frmChildData,
frmChildLock和frmChildPrint.这3个类分别实现IDataOperatable,ILockableForm,IPrintableForm.
一个类同时继承多个子类称为多重继承。如frmChildPrint类派生自frmBaseChild并实现IPrintableForm接口。

2010072311080410.png

MDI框架定义了两个工具栏注册器,实现IToolbarRegister接口。
2010072311084547.png

定义两种不同类型的按钮。

2010072311091978.png

3个子窗体观察者

 

 

==============================

多文档界面(MDI)系统框架已完成。链接地址:

系统介绍及接口设计
多文档界面(MDI)系统框架-C#完整版(一)

父窗体与子窗体之间互动关系及Toolbar实现
多文档界面(MDI)系统框架-C#完整版(二)

系统框架UML图
多文档界面(MDI)系统框架-C#完整版(三)(UML图)

转载于:https://www.cnblogs.com/raychn/archive/2010/07/23/1783567.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
注意,这是未完成版本!!! 由于作者工作原因,暂时没有时间完成,但是基本功能已经实现,有个小问题如果你解决了欢迎发送给我,谢谢! 请用VS2010打开。内含四个DLL工程,及一个DLL 的测试工程。 其中一个问题是,打开子窗口之后子窗口内容没有显示,单击子窗口客户区之后其内容才显示,目前作者没有解决。 /************************************************************************/ /* MdiPlus框架说明 */ /************************************************************************/ /** 项目名称: MdiPlus框架 版本号: v1.0.1 第一作者: Jef 地址: 中国/江苏 日期: 20100616 电子邮箱: dungeonsnd@126.com 版权: 1.本框架完全开源。您可以免费使用本程序,但在用于商业用途前请获得第一作者的许可。 2.您使用本程序而导致任何伤害以及经济损失,由过错方依法承担所有责任, 一概与第一作者及合作单位无关。 3.如果您使用本程序则表示您已经同意此版本协议!否则请勿使用! 项目功能: MdiPlus框架是在Windows平台下把SDI程序行为与MDI程序行为结合在一起的编程手段。 框架最适合: a.以GDI方式输出为主的应用程序。 b.需要多种文档模板输出的MDI程序。 c.需要一个类似于SDI应用程序的固定(禁止改变大小)的View进行绘框架充分进行模块化,把MDI的窗口创建类放在一个单独的DLL中(DllMdiWnd.dll),开发者应该继承 这个类来得到一个文档模板(这样继承者不必考虑创建细节,只负责绘),并且每一个文档模板最好 放到一个DLL中(如ADoc.dll,BDoc.dll,CDoc.dll)。开发者建立主程序来调用ADoc.dll,BDoc.dll, CDoc.dll,每个文档模板(如ADoc.dll)可产生多个对应子窗口。 不过,DllMdiWnd.dll并没有提供view/doc支持,它的职责只是创建及销毁调用者的需要子窗口。 (如果子窗口是new创建出来的,ADoc.dll的基类CMdiPlus中自己会负责delete,开发者可以不调用 delete)。 当然,如果有必要你可以在DLL(A.dll,B.dll,C.dll)中实现view/doc支持。建议根据 需要开发独立的数据模型模块。 如果按照MVC模式的划分,DllMdiWnd.dll可以理解为C(控制器,创建与销毁窗口),继承类(如ADoc.dll, BDoc.dll,CDoc.dll)类似于V(视,负责显示数据),这个框架没有提供M(模型,数据存储)。开发者 应该结合不同的文档模板来实现M。 版本历史: v1.0.1 20100616 第一版本 如何使用: 方法1. 进行项目开发时先建立DLL工程(建议选择 add mfc header win32 dll),然后把 DllMdiWnd.dll拷贝到新建项目中。根据应用需要的不同文档模板建立多个对应的Dll工程,这些Dll 都继承自DllMdiWnd.dll的导出类,假定为ADoc.dll,BDoc.dll,CDoc.dll,这些Dll隐式链接DllMdiWnd.dll。 接着建立支持doc/view类型的MDI MFC主程序工程,隐式链接ADoc.dll,BDoc.dll,CDoc.dll。 另外要特别注意的是,主程序要进行必要的修改,如CChildFrame中要修改窗口样式。建立的MDI 主程序运行过程中将完全类似于SDI程序。如,弹出子窗口时它的视仍然保持最大化(普通的MDI应用 程序中任意一个子窗口从最大化还原时,其它窗口都将处于非最大化状态),并且它永远处于弹出的 子窗口下面,只能(且必须)建立一个CChildFrame。主程序的所有绘工作都在这个 CChildFrame对应的view上进行。如果需要调用子窗口,只需要创建ADoc.dll(或BDoc.dll,CDoc.dll)导 出类的对象即可。子窗口的所有绘工作都在ADoc.dll(或BDoc.dll,CDoc.dll)中实现,所以主程序与 ADoc.dll(或BDoc.dll,CDoc.dll)应该同时开发。 方法2. 开发者可以自己根据需要直接修改Demo版进行开发。 其它: 框架有点类似于多个文档模板的MDI应用程序,但是普通的MDI程序在新建一个文档前无法绘,除非 子类化CMainFrame或截获CMDIClient的消息。这些方式不便进行模块化开发。MdiPlus框架主要优点是在 新建一个文档前就有一个View进行绘,并且不同功能进行模块化,各模块放到Dll中(如果必要,你也 可以直接写成静态库链接到最终的执行程序里),适合一个项目多人同时进行开发。 **/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值