基于Dot Net平台和AE9.0开发通用地理信息系统平台(4)
http://blog.sina.com.cn/s/blog_49d619a301000bgl.html
1.1.2 工具条定制示例:
工具条是基于工具按钮项进行定制的,因此,预进行工具条的定制,必须首先定制工具按钮功能项。下面给出一个工具条定制示例:
/// <summary>
/// 三维分析工具栏
/// </summary>
public class DDDBarDef:IBarDef
{
#region IBarDef 成员
#endregion
}
工具条定制开发完成后就可以在程序启动时或者插件加载时将其添加到主程序中,可以通过如下方法进行按钮和工具条的加载:
1) 加载单独工具按钮项:
IcommandBars cmdBars;
IcommandBar viewToolBar;
cmdBars=_app.Document.CommandBars;
//创建视图工具栏
viewToolBar=cmdBars.CreateBar("ViewToolBar", "视图工具栏", arscCmdBarType.arscCmdBarTypeCommonToolbar, BarDockStyle.Top);
//添加放大工具按钮项到工具条
IUID uid = new GUIDClass();
uid.Value = "ARSC.ArcEngine.Command.ArcMap.CommandControlZoomIn";
viewToolBar.AddCommandItem(uid);
//添加缩小工具按钮添加到工具条
uid.Value = "ARSC.ArcEngine.Command.ArcMap.CommandControlZoomOut";
viewToolBar.AddCommandItem(uid);
2) 加载定制工具条:
IcommandBars cmdBars;
cmdBars=_app.Document.CommandBars;
IcommandBar viewToolBar= cmdBars.CreateBar(new DDDBarDef());
这里需要注意一点,即工具按钮的注册类型问题。系统目前支持如下几种类型的按钮项,分别是arscCmdTypeCommand(普通按钮类型)\ arscCmdTypeMenu(菜单类型)\ arscCmdTypeUIComboBoxCtrl(下拉列表框类型)\ arscCmdTypeUIColorComboBoxCtrl(颜色下拉列表框类型)\ arscCmdTypeUIEditBoxCtrl(静态文本框类型),为了扩充功能,后续将继续扩展该按钮类型。该模式的利用,避免了定制按钮项只是普通命令按钮类型,还可以通过AbstractCommand封装整个菜单项,即将整个菜单项作为单个AbstractCommand进行处理。
浮动窗体定制示例:
系统所有的浮动窗体都是由EngineFramework统一进行管理的,系统通过IdockableWindowManager接口用于浮动窗体的注册查找以及卸载功能。浮动窗体首先必须由IdockableWindoDef接口进行定义,该接口中有一个DockableControl属性,在定制开发时,通过将实际的控件(UserControl)或者窗体通过该属性返回即可。建议定制窗体界面元素利用UserControl进行定制。下面以一个例子进行说明。该例子主要定制了一个ArcToolBox的工具箱浮动窗体。ArcToolBox工具箱内部又实现了插件机制,可以实现插件自动加载。
示例代码如下:
/// <summary>
/// 定义ArcToolBox工具箱窗体。
/// </summary>
[GlobleID("ARSC.ArcEngine.ArcToolBox.ArcToolBoxWindowDef")]
public sealed class ArcToolBoxWindowDef:IDockableWindowDef
{
//自定义UserControl控件类型。
private ToolBoxControl _toolBoxCtrl;
#region IDockableWindowDef 成员
#endregion
}
浮动窗体定制完成后需要进行注册,注册是通过运行时代码进行注册的,注册方法如下:
IDockableWindowManager dockWinManager
= this.m_app as IDockableWindowManager;
ArcToolBoxWindowDef toolBoxDef = new ArcToolBoxWindowDef();
//注册ArcToolBox浮动窗体
IDockableWindow arcToolBoxWindow =dockWinManager.RegisterDockableWindow(toolBoxDef);
//初始化工具箱
toolBoxDef.InitializeArcToolBox(Application.StartupPath + "\\ArcToolBox");
//浮动为Tab模式
arcToolBoxWindow.DockTo(tocWindow, arscDockFlags.arscDockAsTab);
//显示浮动窗体
arcToolBoxWindow.Show();
注意:开发浮动窗体时,也需要定义一个GlobeID特性用于唯一标示该浮动窗体。