ArcEngine的ToolbarControl解析
来源:互联网 发布:西单有mac专柜吗 编辑:程序博客网 时间:2024/05/21 16:32
ToolbarControlClass有三个主要的接口:
IToolbarControl, IToolbarControl2, IToolbarControlDefault
其中,IToolbarControl2是IToolbarControl的新版本.而IToolbarControlDefault is a 'pure' dispatch interface,始终是IToolbarControl的最新的版本,也就是如果有 了IToolbarControl3,那么IToolbarControlDefault就是IToolbarControl3.
在IToolbarControlDefault中有三个Members可以向ToolbarControl添加项:
AddItem():向ToolbarControl添加一个item,支持实现了 ICommand, IMenuDef, IToolbarMenu, ITool, IToolControl, IPaletteDef and IToolbarPalette的类.
AddMenuItem():向ToolbarControl添加一个menu item,是AddItem的一个简略(剪切)版,支持实现了 IMenuDef,IToolbarMenu的类
AddToolbarDef():向 ToolbarControl添加定制的工具item.
下面以AddItem 为例:
第一个参数是object类型,基本可以是这:UID,ProgID,接口(ICommand,IToolBarDef ...),例如
//Adding a command by UID
UID uID = new UIDClass();
uID.Value = "esriControls.ControlsMapFullExtentCommand";
axToolbarControl1.AddItem(uID,-1,-1,false,0,esriCommandStyles.esriCommandStyleIconOnly);
//Adding a command by ProgID
string progID = "esriControls.ControlsMapFullExtentCommand";
axToolbarControl1.AddItem(progID,-1,-1,false,0,esriCommandStyles.esriCommandStyleIconOnly);
//Adding a command by ICommand
ICommand command = new ControlsMapFullExtentCommandClass();
axToolbarControl1.AddItem(command,-1,-1,false,0,esriCommandStyles.esriCommandStyleIconOnly);
ToolbarControl内部有一个CommandPool,用来存放管理Command.当向ToolbarControl中添加一项的时候,AddItem检查CommandPool中是否已经存在该Command.如果没有,这个Command被created,并被加入CommandPool,这个Command的使用计数被置为1.如果这个Command已经存在,它将被重用,使用计数加1.
注意ESRI.ArcGIS.Controls内置的Controls. 像ControlsMapZoomInFixedCommandClass这种以CommandClass结尾的一般是实现了ICommand接口. 这个Command会持久地与MapControl交互就需要ITool接口,像ControlsMapZoomInToolClass这种以ToolClass结尾的都是实现了ITool的类.ControlsFeatureSelectionToolbarClass这种实现了IToolBarDef接口的. 实现了不同接口的类在使用时也有所不同:
ICommand command = new ControlsOpenDocCommandClass();
command.OnCreate(m_mapControl.Object);
command.OnClick();
ICommand pCommand = new ESRI.ArcGIS.Controls.ControlsMapZoomInToolClass();
pCommand.OnCreate(axMapControl1.Object);
axMapControl1.CurrentTool = pCommand as ITool;
ArcEngine中你可以选择如何使用工具条:
1.使用ArcEngine的ToolbarControl,利用Add函数添加现有的Command Controls.
2.使用ArcEngine的ToolbarControl,利用Add函数添加自己实现的Command Controls.当然继承自ICommand或者ITool(或者BaseCommand或 BaseTool抽象类)
3.实现IToolBarDef 接口创建定制的工具条(Tool Bar)
4.在按钮,菜单项或者一般的toolbar中使用ControlsXXXXXXClass
- ArcEngine的ToolbarControl解析
- ToolbarControl
- 自定义ToolbarControl上的工具
- 脱离 ToolBarControl 的命令和工具
- 在toolbarControl之外调用自定义command或tool的方法
- 自定义ToolbarControl
- ArcEngine 9.1的ECP
- ArcEngine 渲染的使用
- ArcEngine 渲染的使用
- ArcEngine 渲染的使用
- ArcEngine 渲染的使用
- arcengine的编辑 捕获
- 向ToolbarControl增加命令
- (十一) 自定义ToolbarControl
- ArcEngine中拓扑的使用
- ArcEngine中拓扑的使用
- 关于ArcEngine Error1327的解决方法
- ArcEngine地图漫游的实现
- Linux下date命令,格式化输出,时间设置
- hdu 4442
- C++实现快速排序,归并排序,堆排序
- Http状态code(PHP开发)
- Centos7安装显卡驱动
- ArcEngine的ToolbarControl解析
- resin与tomcat之比较
- SQL一些常用的查询语句
- HDU 3664 Permutation Counting(DP)
- 智应能用来发财吗?
- hdu 4451
- 压力测试中的一些关键概念:集合点,事务,检查点,思考时间。
- 项目经理面试题
- hdu1179Ollivanders: Makers of Fine Wands since 382 BC.(二分匹配)