使用E-Form++可视化图形组件库系统隐藏参数的方法探讨?

 

作为全球领先的VC++可视化图形组件库,E-Form++在国内国外数百家企业得到了广泛的使用,其产品基础架构完全采用VC++开发而成,无论在产品稳定性或者扩展性上都处于领先地位,是开发高性能的业务流程、矢量图形处理、工业控制、仿真、监控、可变打印、电子表单等软件产品的首选。E-Form++产品架构从设计之初就将用户在实际使用中可能需要的定制,系统隐藏着大量没有在帮助系统或者文档中 未公开的设置变量,通过这些变量或者函数的调用,将进一步E-Form++开发各种复杂的高性能应用的灵活性发挥到了极致:

 

一、在系统扩展参数主要集中在哪些类中?
E-Form++中,绝大多数隐藏 高级功能开关变量或者函数基本上都积累在FO_GLOBAL以及CFOPVisualProxy中,除此之外在数据管理类CFODataModel以及画布核心类CFOPCanvasCore中也有少部分。因此,本文将主要集中讨论如何使用这两个文件中的隐藏参数。

 

二、如何使用这些隐藏参数?
FO_GLOBAL
以及CFOPVisualProxy
中的隐藏参数主要以 如下两个形态存在:


1
、单一变量开关:
例如:BOOL         m_bXPMode; 主要集中在FO_GLOBAL类中,调用方法如下:gfxData. m_bXPMode;
例如:BOOL        m_bWithStyle; 是专门用于定义是否启用系统内置风格的参数,如果启用了该参数后,系统会将画布上所有的图形按照一致的风格参数进行显示,如果不启用该参数,则系统会使用画布图形各自的个性化设置。启用该参数方法如下:

gfxData. m_bWithStyle = TRUE;


2
、通过虚函数来使用:
主要用于提供个性化的绘制功能等高级操作,这部分虚函数主要集中在CFOPVisualProxy类中,调用方法如下:
1)
、从CFOPVisualProxy创建一个扩展类,例如CNewVisualProxy,如果您自己编写这样一个类比较麻烦,建议您直接从E-Form++提供的示例程序中复制过来,例如:VisioApp示例。
2
)、在…App::InitInstance()函数中调用如下代码来使用该扩展类:
FOInit(RUNTIME_CLASS(CNewVisualProxy));
3
)、根据需要在CNewVisualProxy类中重载CFOPVisualProxy
的虚函数来增加各种定制功能。推荐做法如下是将缺省的代码复制出来,进行适当的修改满足需求。

 

三、常用系统变量列表:


1
int                   nfopSpace;
说明:通过该参数可以设置复合图形附带标签的标签位置同复合图形本身的间距。


2
int                   m_nLimitShapeForSimpleMove;
说明:当画布上的图形选中的图形在执行移动、旋转、缩放等操作的时候,会有虚框显示过程中的状态,如果选中的图形太多并且每个虚框都显示则会极大的影响性能。因此在达到一定的数目后,我们可以让其只用一个整体虚框来代替。通过调用此变量值来设定这个值。


3
int                   m_nDefFontSize;
说明:画布上图形的缺省字体大小。


4
CString            m_strDefFontName;
说明:画布上的图形的缺省字体名称。


5
int                   m_nDefShapeHeight;
说明:在拖拉图形进入画布时,有一个缺省大小,通过这个值可以设置该缺省大小。


6
BOOL              m_bUseDefaultPort;
说明:通过调用int                    m_nDefPortHeight; int                 m_nDefPortWidth; int                  m_nDefPortType; int                     m_nDefPortSide; 变量可以设定图形内部的连接线停靠点的缺省的宽度、高度、类型以及连接线连接的方向。而缺省情况下,系统是不允许自定义这些属性值的,通过m_bUseDefaultPort
开关,可以让系统允许此操作。

 

    7、COLORREF m_crHighLight;

   说明:当选中任意一条连接线时,系统会在连接线绘制一个绿色的包围框,以此表示高亮显示状态,通过修改此变量,可以指定新的高亮显示颜色值。

   8、BOOL m_bHighLight;

   说明:当选中任意一条连接线时,系统会在连接线绘制一个绿色的包围框,以此表示高亮显示状态,如果不需要这种方式,可通过此变量来屏蔽掉。

 

   9、int m_nNavItemWidth;与int m_nNavItemHeight;

   说明:当参阅示例ExtMultiMDISample时,在左边的列表中显示当前编辑页面的内容的缩微图,通过修改这两个参数可设定该缩微图的大小。

 

   10、BOOL m_bGifAnimate;

   说明:通过此变量可以控制是否允许在画布上播放Gif动画。

 

   11、int nDefaultRoundLenght;

   说明:设置绘制连接线的拐角的圆弧大小,如下图:

 

   12、CString strToolTips;

   说明:如下图,当鼠标在运行状态经过图形时会显示一个提示标签,修改该值可以设定提示文本的缺省文本。

  13、CPoint ptDefaultPasteOffset;

  说明:当连续多次粘贴图形到画布上时,图形会按照一定的间距依次排列,此变量用于控制间距。见下图:

 

14、int nDefaultHelpLineWidth;

说明:缺省的辅助线的宽度。

 

15、COLORREF crDefaultHelpLineColor;

说明:缺省的辅助线的颜色值。

 

16、COLORREF crDefaultFocus;

说明:如下图所示焦点图形的显示颜色。

 

17、COLORREF crDefaultDotLineColor;

说明:如下图所示,缺省虚线的颜色值。

 

18、CSize szSelectCompHandleSize;

说明:选择框顶点的大小设置,如下图:

19、COLORREF crUnSelectCompColor;

说明:选择图形中非主要图形的颜色。

 

20、COLORREF crSelectCompColor;

说明:选择图形中主要图形的颜色。

 

21、CString m_strDefToolboxFile;

说明:缺省的toolbox窗口的图形存放文件夹的索引文件名称。一般默认为index.dat文件。可将其修改为任意希望的文件名称,并在shapes子目录下与其保持一致。

 

22、BOOL m_bAllowHitChildren;

说明:是否允许单击复合图形内部的子图形。

 

23、BOOL m_bExpandEditBoxCenter;

说明:当我们双击画布上图形的时候,一般都会出现一个可以录入文本的编辑框,编辑框在显示录入文本有两种方式:从中心向两边扩展或者从左边向右扩展,通过此开关参数可以设定。

 

24、int m_nDimHeader;

说明:设置标注图形的突出部分的长度。

25、CString m_strToolBoxPrompt;

说明:当鼠标移过左边工具盒的图标时,会出现一个提示标签窗口,通过修改此变量来设定缺省的提示内容。

 

26、CString m_strToolBoxCaption;

说明:设置工具盒中的元件的缺省标题名称。

 

27、UINT m_RulerType;

说明:设置标尺的缺省刻度类型。

 

28、BOOL m_bContinueDrawing;

说明:如果单击右边的绘图工具条后希望连续绘制多个同一图形,可通过此开关变量打开,在连续绘制的过程中,可以通过单击鼠标右键来结束。

 

29、BOOL m_bEnableSimpleTrack;

说明:如果希望在画布上移动、旋转、缩放复合图形的时候只显示一个简单的虚框来代替细节虚框以提高速度时,可通过此开关变量打开。

 

30、BOOL m_bShowDimLabelInside;

说明:如果希望标注图形的标签显示在标注线内部而不是外面可通过此变量来设定。

31、BOOL m_bRouteFromTop;

说明:如下图,当连接线相交时,绘制穿越标记有两种选择,从左边穿到右边或者从上边穿到下边。通过此参数可设定。

32、BOOL m_bWithToolTip;

说明:是否允许在运行模式下为鼠标移动经过的图形显示提示文本窗口。

 

33、FOPBridgeStyle m_DefBridgeStyle;

说明:如下图,当连接线相交时,绘制的穿越标记类型。

34、BOOL m_bNotUseScaleAll;

说明:针对Sub - Graph图形,当我们缩放的时候,如果希望内部的子图形也一并缩放,通过此参数可以启用。

 

35、BOOL m_bWithSnap;

说明:如果希望关闭所有的自动对齐或者自动吸附功能,可通过此参数来启用。

 

四、常用虚函数列表:

1、virtual void DoDrawPortIndexLabel(CDC *pDC, const CPoint &ptPort, const int &nPortIndex,
const int &nPortConnectType, const int &nPortAllowNumber);

说明:覆盖此函数可以定制连接线停靠点的标签样式,如果要取消该标签的显示,只需要删除全部代码即可。

 

2、virtual void DoInitDefaultProp(CArray<FOP_CUST_PROP,FOP_CUST_PROP> &mpProp);
 

说明:覆盖此虚函数为画布上的所有图形元件增加全局的属性值,新增加的属性值只需要加入mpProp数组中即可。新的属性值具有同标题等缺省属性值一样的地位。

 

3、virtual CRect GenLabelPosition(const int &nShapeType, const CRect &rcShapeSnap,
const int &nLabelPos, const CSize &szText);

说明:覆盖此虚函数可以重新为复合图形的标签计算位置。

 

4、virtual void DoGenAddiToolTips(CString &strGen, const UINT &nType);

说明:覆盖此虚函数可以为快捷菜单定制显示文本。

 

5、virtual void FillCustomWithType(CDC *pDC, CRect rect,BOOL bTitle, UINT nType,const COLORREF &crFirst,
const COLORREF &crSecond, const BOOL &bClip = TRUE, CRgn *pRgn = NULL, FOPGradient *aGradient = NULL);

说明:覆盖此虚函数可以为画布上的任何图形定制新的填充方式,例如使用位图来进行填充。

 

6、virtual void TakeAngleStr(long nAngle, CString& rStr) const;

说明:覆盖此虚函数可以 为标注图形设定新的角度标签字符串。

 

7、virtual void GenerateDefaultPorts(CArray<FOP_PortScale,FOP_PortScale>* mpSpot,const int &nShapeType);

说明:覆盖此虚函数可以为画布上所有的图形设定缺省的停靠点位置和 数目。

 

8、virtual void TakeDetailUnitStr(const FieldUnit &eUnit, CString& rStr);

说明:覆盖此虚函数来定制单位的显示字符串。

 

五、 小结

E-Form++从开发之初就将所有功能能够全面定制作为设计第一要务,为此,架构设计师耗费了极大的精力来保证设计的最佳合理性。CFOPVisualProxy代理类和FO_GLOBAL全局控制类的使用圆满的完成了设计师的目标。

E-Form++可视化图形组件库企业版本全功能免费评估版本(附带大量示例VC++源代码)下载地址:http://www.ucancode.com

联系 UCanCode

购买源代码或了解更多的简单方法

  • 产品询价

  • E-mail 给我们(sales@ucancode.com)