下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在这个论题中,你将学会怎样创建一个可以插入到ArcGISDesktopapplication的组件。重点是在特定的语言中如何编写代码或怎样解决一个特定的ArcObjects问题。这部分还提供怎样包装component的解决方案以及应用于ArcGIS。下列步骤用来创建一个组件。1.创建一个新的工程。2.添加引用。3.创建一个新类。4.实现接口。5.导入命名空间。6.编写实现代码。7.将组件插入ArcGISDesktop中。8.将组件编译为DLL。9.测试/调试/重新编译。Step1:创建一个新的工程设计一个新的ArcGIS桌面组件,你要创建一个新的类库(DLL)。为工程和每个类提供有意义的名字。工程的名字将是默认的DLL的名字。当然你也可以在工程属性页上重命名。为了在ArcGISDesktop应用程序中使用.Net组件,要在AssemblyInformation对话框中设置COM可见。下一步是在开发时使ArcGIS桌面软件可以使用组件,在VisualStudio中编译时通过COM注册程序集。属性页的Build(C#)或Compile(VB.NET)选项卡中可以设置COMInterop。一个简单的DLL文件可以包含若干类或组件。因此为每个组件创建一个新的类库是不必要的。需要的话,可以将许多按钮、工具条和其他组件放置在一个程序集中。ArcGISVisualStudioIDE集成框架中的ArcGIS工程模板可以为Dektop组件自动设置工程属性。Step2:引用ArcObject组件在ArcGIS桌面应用程序中使用VBA编程时,不需要明确的引用ArcObjects类库,因为大部分已经添加了引用。在独立开发环境,如VisualStudio2005中则不同°.NET开发时将COM对象库导入到.NET程序集中便可引用任何对象。除了标准的.Netframeworkassemblies夕卜,代码中引用的任何程序集都要明确的导入到工程中。引用其他的assemblies,从工程菜单中选择AddReference...o几乎所有的工程都要引用ESRI.ArcGIS.SystemUI,因为这个组件中包含按钮和命令的插入接口(例如,ICommand、ITool)。Step3:创建类为了保证.NET组件与ArcGISdesktop应用程序相关联,需要添加若干COM关联属性到类中。包括为每一个.NET组件分配一个确切的GUIDo可以使用VisualStudio2005中的GUID的创建程序获得一个新的GUIDo在VB.NET中,从添加项对话框中选择COM类模板。这个模板已经包含了所有COM关联属性。在C#中,从添加项对话框中选择类模板,在工程中创建后即添加GuidAttribute和ClassInterfaceAttribute。确保类的访问修饰符是public并记着C#区分大小写。ArcGISVisualStudioIDE集成框架中的ArcGIS项模板提供更简单的方法来创建类和并将其与COM关联。Step4:实现所需的接口为了确保你的组件能被ArcGISDesktop应用程序识别,需要实现一个或多个接口或.NET基类,根据组件而定。在ArcMap的用户接口上添加新的控件,需要应用一些基本属性,例如控件上的图像(Bitmapproperty)、鼠标停留在控件上显示的内容(ToolTip),最重要的是单击控件时控件的响应(OnClickeventprocedure)。作为程序员,你要编写代码来处理这些属性和方法。ESRI.ArcGIS.SystemUI的ICommand接口^Command:1Urknown■—Bitmap:OLE_HANDLE■—Csption;Stri电—Category:Siring■—Checked:Boolean■—Enabled:Boolean■—HelpContextlD:LongHdpFile:Stnns■—Message:String■—Name:String*—TooEtip:StringV-OnClickV—OnCreafe(inhw*;IDispatch)Step5:导入命名空间在VC++、VB6或VBA中,正确引用类,需要通过库名指定完全限定名,在这些语言中通过完全限定名引用是可选的。然而,在.NET中必须通过命名空间完全限定类。例如,ESRI.ArcGIS.SystemUI命名空间下ICommand接口的完全限定名是ESRI.ArcGIS.SystemUI.ICommand.为了简化代码,增强可读性(节省输入命名空间的时间),可以在代码开头插入using指令(C#)或imports(VB.NET)。在VB.NET中,命名空间导入也可在工程属性页的引用选项卡上设置。使用InsertArcGISUsingDirectivescommand快速向代码文件中导入ESRI命名空间。Step6:编写实现代码确定实现的接口后,就需要为每个接口和属性编写代码。要符合组件对象模型的规定,就意味着在类文件中实现这些方法和属性。在类的声明中输入实现代码时,VisualStudio的IntelliSense要素会显示一个智能的标签下拉表来帮你实现接口。Step7:将组件插入ArcGIS桌面应用程序在ArcGIS桌面应用程序中使用自定义组件时,需要先在操作系统中注册并注册到正确的组件类型中。在.NET中,当程序集通过COM注册时,组件自动注册到组件类型中。反之,反注册程序集会移除组件注册入口。.NET框架包含两个属性类(System.Runtime.InteropServices命名空间中的ComRegisterFunctionAttribute和ComUnregisterFunctionAttribute),当注册和反注册组件可以调用其中的方法。注册类中的CLSID通过这两种方法进行传递,利用这个信息就可以在方法内书写代码进行注册和删除。在组件类型中注册组件需要知道组件的的类型ID(CATID)。Step8:将组件编译为DLL代码编好后,若想将其运行于桌面应用程序中,需要将其编译成一个DLL。从Build菜单中选择‘Build<projectname>’来编译DLL,并将其输出到工程属性页指定的位置。如果代码中没有错误,就可以编译DLL,不然VisualStudio会报错。'<Classname>没有实现接口成员<membername>。'--没有实现接口的所有方法和属性。'assembly中定义的类<typename>没有引用。'--没有添加程序集的引用。'无法删除文件<DLLfile>。访问<DLLpath>被拒绝'或'无法将文件<DLLfile>复制到<DLLpath>。这个进程不能访问文件<DLLfile>,这个文件正在被其他进程使用。'--这个DLL正在使用,例如ArcMap或ArcCatalog正在使用。在开发组件的测试/调试阶段可能会遇到这个错误。在桌面应用程序内调试和测试组件。在VisualStudio2005中开始调试时,要在工程属性页设置调试属性。在调试选项卡上,选择从外部程序开始,输入桌面应用程序的路
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年雷达射频隐身波形设计与资源优化指南
- 历史国防现代化起步和外交工作新突破(课件)-2025-2026学年统编版八年级历史下册
- 重庆市大渡口区2025年网格员考试练习题(附答案)
- 2024-2025学年度辅警招聘考试常考点试卷(巩固)附答案详解
- 2026年光伏面板与起降场结构一体化施工方案
- 2026年构建清晰碳账本CBAM碳核算管理体系实务
- 2026年从“串点成线”到“聚链成群”:具身智能产业生态协同
- 2026年国家未来产业发展专项基金设立与长期绩效评价体系
- 2026年深化开源开发加快开源社区数据集工具集建设政策解读
- 2024-2025学年公务员(国考)每日一练试卷附完整答案详解(考点梳理)
- 2026届沈阳市高三语文一模作文题目解析及范文:时间会治愈一切
- 煤炭培训课件下载安装
- 公交服务质量培训课件
- 公安基础知识(重要知识点)
- 2025年成都传媒集团笔试面试题及答案
- 2026春三年级下册第二单元6《会摇尾巴的狼》 教学教学课件
- 高中数学竞赛与常规教学融合的实践路径优化与突破教学研究课题报告
- 2026年河南机电职业学院单招职业适应性测试必刷测试卷汇编
- 药品供应链与药品追溯系统
- 2025至2030模具加工行业运营态势与投资前景调查研究报告
- 2026年宝鸡职业技术学院单招职业技能测试题库及答案解析(夺冠系列)
评论
0/150
提交评论