|
Form++产品重要概念 |
[下一页] |
更详细的关于Form++产品的技术细节,请查看下面的列表:
|
一、Form++为我们提供了什么?
Form++扩展组件库提供给开发人员是一个完整的框架(Framework),在这个Framework中开发人员可以快速开发任何高级的基于GDI的系统。目前版本的Form++直接Visual
C++,Visual C++ 2019以及Visual
C++.NET中的任何平台以及在Win 10、Win
7、Win8、Win NT 4.X、Win
XP平台上都经过了严格的测试。
在Form++产品中,所有的组件都被绘制在一个画布上面,如果您希望添加新的对象并且支持画布的所有高级功能,您唯一要做的事情就是将这个组件添加到画布上,画布将自动管理所有的组件,并完成所有的高级操作(对象拉伸、对象移动、对象旋转、网格显示、Undo\Redo等等)。目前版本提供的组件(直线、曲线、椭圆、矩形以及ToolBox上的组件等)都只是我们提供的一些范例,更多更高级的组件您可以自己定义和扩充。同时在Form++中,每个组件以及画布的属性都可以灵活扩展,也就是说,您可以为任何组件添加任意多的属性。开发人员在扩充新的组件的时候只需要从原有组件类继承新的C++类即可。
以下是在Form++ 产品中常用的术语和它们的定义:
二、Form++的设计模式
在Form++中,画布被切分为Data
Model同View两个部分,其中Data Model只负责对所有数据进行管理。而View负责接受用户的外部命令(包括鼠标、键盘、菜单等)以及控制对象在屏幕上的显示、打印等绝大部分操作。
Form++是使用MFC进行编译的,因此我们在设计Form++的时候就力图将Form++的设计结构同MFC保持一致,事实上绝大多数Form++扩展类都是从CObject或者CCmdTarget继承下来的,标准的MFC操作比如文件的序列化(Serialize)、动态创建对象等特性都在Form++中得到了非常完整的体现。
三、一些基本概念:
(1)、组件(Shape)
在Form++中,组件就是具有特定大小和形状的并且能够在画布上完成自己绘制的所有对象,例如Form++提供的直线、曲线、椭圆、矩形、文本等都是组件的一些范例。在Form++中组件又被切分成数据和显示两个部分,我们将所有的数据值都放置在组件的属性中,而将其它的如显示、旋转、移动等操作函数放置在组件本身。这样,您可以在任何时候独立的为组件定义新的数据(属性)或者为组件定义新的操作。
(2)、控制手柄(Control
Handle)
控制手柄实在组件被选中时显示的矩形框。对于基本组件如直线,矩形等控制手柄被放置在各顶点处。允许移动这些顶点来改变组件的形状。
(3)、连接(Link)
连接是组件之间的连线,用以显示组件的关系。连接是特殊的组件,在两端各有一个端口,这些端口可以与其它组件的端口项连。
(4)、模型(Data Model)
在Form++中Data
Model处于一个非常重要的位置,它负责对所有组件以及画布的数据流进行管理,其中包括添加新的组件、删除组件、管理组件的属性、管理画布的属性、编辑组件、管理所有的命令等,当Data
Model中的数据发生变化的时候,它会自动的通知View并且在View上得到刷新。
(5)、停靠点(Port)
端口定义了组件与其它组件项连的点,一个连接连通两个端口。
(6)、属性(Property)
在Form++中,属性就是一个或者一组能够赋给处于运行状态组件的值。在Form++中我们提供通过单一的界面来存储和重新取得对象的所有属性。所有的属性都可以在运行状态下动态的添加和删除,正是由于具有在运行时发现和访问对象的属性的能力,所以可以为访问属性编写普通的服务。例如,同样的串行化代码用来存储和重新取得所有组件的属性。当新属性增加时,不必改变串行化代码。普通的属性浏览器也可以针对对象的属性给它一个相容的界面。
(7)、工具盒(ToolBox)
工具盒是停靠在主窗口左边的一个工具栏,在这里年可以选择组件并把它拖到视图中去。
(8)、Form++的画布
Form++ MFC Library提供了一个画布(用户在上面绘制和处理各种对象),用户可以直接在这个画布中绘制直线、曲线、多边形、文本、图片、椭圆、矩形等对象,同时也可以通过拖拉的方式将自定义对象拖入到这个画布中,此外用户还可以在画布上移动对象、旋转对象、拉伸对象、创建连接、编辑对象属性、打印对象等等操作。MFC开发人员可以轻松的将这个画布集成到一个现有的MFC应用程序中或者创建一个新的包含这个画布的应用程序。Form++支持一个类似于Visio的ToolBox,在这个ToolBox中,开发人员可以定义的新对象(这些对象通过Form++提供的工具可以完全控制,包括增加新的对象、删除对象、编辑外观等),同时开发人员也可以将多个对象放在一起构成更为复杂的组合对象。除此之外,画布还支持对象任意移动、对象拉伸、对象旋转、对象组合与分解、对象对齐、对象大小变化、对象连接、无限制的Undo\Redo功能、所见及所得的屏幕编辑以及打印和打印预览等功能。并且Form++还提供了一套非常完善的面向对象的体系来协助开发人员修改或者扩展其本身的功能。
(9)、Form++开发工具
Form++ MFC Library提供了自动代码产生工具(Form++
AppWizard同Form++ New Class AddIn),开发人员可以通过这些自动代码产生工具来创建新的组件、添加新的命令、扩展新的属性,这样您在使用Form++
MFC Library的时候将变得更快捷、更轻松。此外,Form++还为你提供了完善的文档以及一个自动创建程序向导AppWizard,开发人员可以直接在Visual
C++集成环境中运行此向导,这个向导将自动为您产生您的应用程序的调用代码,同时您还可以通过这个向导来定制到底您的应用程序需要Form++的那部分功能。
(10)、命令(Action)
在Form++中,命令就是能够对组件进行各种动态操作的动作,命令是构成Form++中画布的Undo\Redo架构的核心组成部分。在Form++中您可以定义任意多的命令,例如:CFOAddAction、CFORemoveAction、CFOMoveCompAction等就是命令的一些范例。
(11)、视图View
在Form++中,View完成所有的外部事件(鼠标、键盘等)的处理,在Data
model的数据发送变化或者增加了新的命令的时候,View可以自动的刷新屏幕来更新显示,同时View采用了(双缓冲)Double
Buffer技术来保证在刷新屏幕的时候不会闪烁。
(12)、复合组件:
复合组件就是一种能够包含子组件的组件,它可以对所包含的子组件进行统一管理,比如:移动、放缩、旋转。此外复合组件的每个子组件拥有属于自己的属性。复合组件提供了添加、删除子组件的功能。您可以使用任意一个Form++示例程序来创建复合组件。
如下图:
|