当前位置: 首页 > 编程日记 > 正文

ArcEngine的ToolbarControl解析

转自Love Lyre原文 ArcEngine的ToolbarControl解析

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

<以上为纯属个人理解,如有错误,请留言,谢谢>

相关文章:

在C#里实现DATAGRID的打印预览和打印

作者Blog&#xff1a;http://blog.csdn.net/qieyj/很多人都在论坛里问&#xff0c;如何实现DATAGRID的打印预览和打印&#xff0c;现在我就把这方面的源代码告诉大家。这段代码也花费了我1个晚上的时间&#xff0c;呵呵&#xff01;数据库是基于sql server2000自带的northwind。…

ORACLE SQL: 经典查询练手第二篇

本文使用的实例表结构与表的数据如下&#xff1a; scott.emp员工表结构如下&#xff1a; SQL> DESC SCOTT.EMP;Name Type Nullable Default Comments -------- ------------ -------- ------- -------- EMPNO NUMBER(4) 员工编号 ENAME…

第十三届光华工程科技奖名单揭晓!这40位专家和1个团体获奖

11月8日&#xff0c;第十三届光华工程科技奖揭晓仪式在北京隆重举行。工程科技是推动人类进步的发动机&#xff0c;是产业革命、经济发展、社会进步的有力杠杆。光华工程科技奖由中国工程院主管&#xff0c;目前已是第十三届&#xff0c;被誉为“中国工程界最高奖项”&#xff…

【C#公共帮助类】给大家分享一些加密算法 (DES、HashCode、RSA、AES等)

http://www.cnblogs.com/yuangang/p/5466068.html转载于:https://www.cnblogs.com/daming1233/p/6704562.html

MongoDB的备份(mongodump)与恢复(mongorestore)

为什么80%的码农都做不了架构师&#xff1f;>>> 不用多想&#xff0c;数据的备份无论什么时候都是必须的&#xff0c;尤其是重要数据。 MongoDB也提供了备份和恢复的功能&#xff0c;分别是MongoDB下载目录下的mongdump.exe和mongorestore.exe文件。 先介绍下命令…

Windows 2000/XP 注册表终极修改(转载)

Microsoft Windows 2000/XP 是一个强大的操作系统&#xff0c;为我们提供了以往Windows 9x从未有过的安全性能&#xff0c;可是你是否感觉某些地方的设置还不够呢&#xff0c;这里就对Windows 2000 的注册表进行一些修改来达到我们的目的。 一、修改开始菜单和任务栏 由于以往不…

百度CTO王海峰获“光华工程科技奖”,深耕自然语言处理近30年

11月8日&#xff0c;第十三届光华工程科技奖揭晓仪式在北京举行。该奖项被誉为“中国工程界最高奖项”&#xff0c;旨在对我国工程科技及管理领域做出杰出贡献的科学家、工程师进行表彰。百度CTO王海峰因其在人工智能领域、尤其是自然语言处理领域的卓越贡献&#xff0c;成为AI…

python自定义库文件路径

各有各的小烦恼&#xff0c;各有的小期待 这是人家私事&#xff0c;不要大嘴巴 在Pycharm中import whois时&#xff0c;总是失败 原因是安装了python3.x相关操作过程&#xff0c;将环境变量path中关于Python的配置c:\Python27和c:\Python27\Scripts都删除&#xff0c;pycharm中…

开机BIOS语言(转载)

开机自检时出现问题后会出现各种各样的英文短句&#xff0c;短句中包含了非常重要的信息&#xff0c;读懂这些信息可以自己解决一些小问题&#xff0c;可是这些英文难倒了一部分朋友&#xff0c;下面是一些常见的BIOS短句的解释&#xff0c;大家可以参考一下。 1.CMOS battery …

参与开源项目,结识技术大牛!CSDN“开源加速器计划”招募志愿者啦!

什么是“CSDN开源加速器计划”&#xff1f;纵观近 30 年的科技创新&#xff0c;开源已成为全球技术应用和行业数字化发展的基石&#xff0c;尤其最近几年&#xff0c;开源的商业化得到了极大突破&#xff0c;开源正在成为全球科技的强劲驱动力。在开源生态中&#xff0c;开发者…

破解CentOS的root密码(救援模式无密码)

开机后&#xff0c;在倒数读秒的时候按任意键、跳转画面后&#xff0c;再按E键&#xff0c;进入如下界面&#xff1a; 此时把光标定位到第二行&#xff0c;再按E键&#xff08;意为&#xff1a;在启动顺序里编辑这条命令&#xff09;&#xff0c;如下图&#xff0c;此时输入“空…

第九—十三单元练习

<<<第九单元练习>>>1.在desktop主机中建立用户westos&#xff0c;并设定其密码为westoslinux2.配置desktop中的sshd服务要求如下&#xff1a;*&#xff09;设定sshd服务只允许westos用户可以被访问使用*&#xff09;创建westos用户的key认证方式*&#xff09…

用 Java 训练深度学习模型,原来这么简单

作者 | DJL-Keerthan&Lanking来源 | HelloGitHub头图 | CSDN下载自东方IC前言很长时间以来&#xff0c;Java 都是一个很受企业欢迎的编程语言。得益于丰富的生态以及完善维护的包和框架&#xff0c;Java 拥有着庞大的开发者社区。尽管深度学习应用的不断演进和落地&#xf…

重装操作系统的20条原则(转载)

系统是否需重装&#xff0c;三条法则帮你忙&#xff1a; 如果系统出现以下三种情况之一&#xff0c;应该是你考虑重装系统的时候了&#xff1a;   1)系统运行效率变得低下&#xff0c;垃圾文件充斥硬盘且散乱分布又不便于集中清理和自动清理&#xff1b;   2)系统频繁出错&…

RKLayout

2019独角兽企业重金招聘Python工程师标准>>> RKLayout 是 iOS 上一个简单的布局管理器 转载:http://www.adobex.com/ios/source/details/00000978.htm 转载于:https://my.oschina.net/u/868244/blog/107107

【网络流24题】最小路径覆盖问题

【题目】1738: 最小路径覆盖问题 【题解】网络流 关于输出路径&#xff0c;因为即使有反向弧经过左侧点也一定会改变左侧点的去向&#xff0c;若没连向右侧就会被更新到0&#xff0c;所以不用在意。 mark记录有入度的右侧点&#xff0c;然后从没入度的右侧点开始把整条路径输出…

Windows的端口列表(转载)

按端口号可分为3大类&#xff1a; &#xff08;1&#xff09;公认端口&#xff08;Well Known Ports&#xff09;&#xff1a;从0到1023&#xff0c;它们紧密绑定&#xff08;binding&#xff09;于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如&#xff1a;80端…

有了图分析,可解释的AI还远吗?

GraphAI 更多新可能随着深度学习、机器学习等人工智能技术的逐级深入&#xff0c;企业对挖掘大数据的关联性去探索“隐藏”在背后的商业价值提出了更高的要求。尤其是&#xff0c;新一代人工智能技术正从“感知智能”迈向“认知智能”&#xff0c;让机器实现“理解、推理、决策…

智能公交GPS

蓝斯通信推出LZ8713B*-X车载终端。这款设备是按交通部JT/T794-2011《道路运输车辆卫星定位系统车载终端技术要求 》和JT/T808-2011《道路运输车辆卫星定位系统车载终端通讯协议及数据格式》技术标准进行设计的。 产品集GPS&#xff08;可选配BD2双模模块&#xff09…

数据化管理在餐饮业中的应用

一、为什么要重视数据化运营和管理&#xff1f; “从经营到管理&#xff0c;管理方向需要数据灯塔” 餐饮市场和社会各业具有相似之处&#xff0c;也有很明确的本质不同。 1、首先&#xff0c;餐饮市场不像电信、石油市场是垄断性的&#xff0c;餐饮市场充分透明&#xff0c;符…

1 元秒杀 1000+ 册爆款电子书,错过再等一年!

wow代码人们让钱包瑟瑟发抖的双十一已经来啦与此同时码不停蹄地向你奔赴而来的还有 CSDN 为你准备的???? 1 元秒杀 ????价值 3.5 万元的爆款电子书限时特惠&#xff0c;仅需 1 元你&#xff0c;准备好了吗仅限 500 人速领????????????错过悔10年系列好书一

关于XP进程问题(转载)

Smss.exe 会话管理子系统&#xff0c;它负责启动用户会话。这个进程是通过系统进程来初始化的&#xff0c;包括对已经正在运行的Winlogon&#xff0c;Win32&#xff08;Csrss.exe&#xff09;线程和设定的系统变量作出反映。在它启动这些进程后&#xff0c;它等待Winlogon或者C…

NoticeView

2019独角兽企业重金招聘Python工程师标准>>> NoticeView 是 iOS 的消息提醒组件&#xff0c;类似 TweetBot 的提醒。 转载:http://www.adobex.com/ios/source/details/00001068.htm 转载于:https://my.oschina.net/u/868244/blog/107344

elasticsearch 分片恢复经历了哪些步骤?

why 服务重启&#xff0c;或者与集群断网重连时&#xff0c;需要和集群当前的主分片的数据保持一致。 how 上图中&#xff0c;RecoverTarget 代表加入集群前想要同步数据的分片&#xff0c;RecoverSource代表当前集群中的正常分片。 同步过程本质上来说&#xff0c;就是通过拷贝…

Java 事件适配器 Adapter

事件适配器Adapters 在上一篇文章中&#xff1a; http://www.cnblogs.com/mengdd/archive/2013/02/06/2908241.html 第二个例子中&#xff0c;可以看到要实现相应的事件监听器接口&#xff0c;就必须实现其中的所有方法。 有的接口中包含多个方法&#xff08;多个事件处理器&am…

Facebook面经全披露,我是怎么拿到机器学习工程师offer的?

作者 | Rahul Agarwal翻译 | Katie&#xff0c;责编 | 晋兆雨出品 | AI科技大本营头图 | 付费下载于视觉中国去年八月&#xff0c;我正在接受面试。那时&#xff0c;我已经分别接受Google India和Amazon India的机器学习和数据科学职位面试。然后我的上级建议我申请Facebook伦敦…

内存性能参数详解(转载)

内存性能参数详解 先说说最有效提高你机器内存性能的几个参数&#xff1a;CL&#xff0c;TRP&#xff0c;TRCD CAS Latency “列地址选通脉冲潜伏期” BIOS中可能的其他描述为&#xff1a;tCL、CAS Latency Time、CAS Timing Delay&#xff0c;这个值一般是1.5~3之间&#xff0…

一些关于Hibernate延迟加载的误区

最近面试别人&#xff0c;正好出的笔试题中有道关于Hibernate延迟加载的问题&#xff0c;聊天过程中发现很多人对Hibernate的延迟加载有些理解误区&#xff0c;写 些东东在这里&#xff0c;希望对大家有所帮助。 首先是第一个误区&#xff1a;延迟加载只能作用于关联实体看到这…

Java单元测试与Jutil详解(一) 简介

1.什么是单元测试 单元测试&#xff08;unit testing&#xff09;&#xff0c;是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义&#xff0c;Java里单元指一个类。总的来说&#xff0c;单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中…

反转!BAT编程吸金榜来了,AI程序员刷爆了......

从2017年开始&#xff0c;人工智能便波澜不断&#xff0c;无论是从BAT高调布局AI&#xff0c;还是从年薪80万招聘AI应届生&#xff0c;炽手可热形容AI工程师一点都不过分。百度推出“少帅计划”,针对30岁以下的深度学习科学家&#xff0c;开出100万以上年薪&#xff01;阿里巴巴…