在ArcObjects中,CoClass是可以直接实例化的类,在VC中我们可以通过以下多种方法进行实例化:
过程描述
1.在变量声明的同时直接使用CLSID进行构造
示例:
IPropertySetPtr ipPropertySet(CLSID_PropertySet);
ipPropertySet->SetProperty(CComBSTR(L"DATABASE"),CComVariant(path));
2.CoCreateInstance方法(ATL CComPtr 模板类成员 atlbase.h)
示例:
CComPtr<IWorkspaceFactory> ipWorkspaceFactory;
ipWorkspaceFactory.CoCreateInstance(CLSID_ShapefileWorkspaceFactory);
3.CreateInstance方法(COM interface pointer 模板类_com_ptr_t成员 comip.h)
示例:
IFeatureLayerPtr ipFeatureLayer;
HRESULT hr = ipFeatureLayer.CreateInstance(CLSID_FeatureLayer);
用下来感觉后两种方法比较灵活,可以在创建时再决定对象的具体类。我们可以将变量声明为抽象类或者接口,在实例化时再根据需要创建为特定的具体类。
分享到:
相关推荐
在使用VC++开发ArcEngine应用程序时,首先需要对两者的基础知识有一定的了解。 1. **ArcEngine概述**: ArcEngine是一个COM(Component Object Model)组件,包含了用于构建GIS应用程序的各种接口和类。它支持多种...
ArcEngine是ESRI公司推出的一款强大的地理信息系统(GIS)开发平台,用于构建桌面、Web和移动应用。它为开发者提供了丰富的API和工具,使得开发者可以利用其强大的地理处理功能和空间数据管理能力,进行定制化的GIS...
- 初始化ArcEngine:通过CoCreateInstance方法创建IGlobeEngine或IMapEngine实例,初始化GIS引擎。 - 加载数据:使用IMapControl或IGlobeControl加载地图文档或服务,或通过ILayer接口添加数据源。 - 功能实现:...
**Arc Engine开发入门教程** Arc Engine是Esri公司推出的一款强大的地理信息系统(GIS)开发工具,主要用于构建桌面、Web和移动平台的GIS应用程序。本教程将深入探讨Arc Engine的使用和二次开发,帮助初学者快速...
ArcEngine是Esri公司开发的一个强大的GIS开发平台,它允许开发者构建定制化的GIS应用程序,实现地图的创建、编辑、分析以及空间数据的管理。 本讲义首先会介绍ArcEngine的基本概念,包括GIS的核心概念、ArcGIS产品...
ArcEngine的核心是其丰富的API,允许开发者利用各种编程语言(如C#、VB.NET、VC++等)进行定制化开发。本文将详细介绍如何通过ArcEngine插件来添加点、线、面对像,以及这些基本要素在GIS中的应用和重要性。 首先,...
开发ArcENGINE应用,首先需要安装ArcGIS Desktop和ArcGIS Engine Developer Kit。Developer Kit包含了开发所需的头文件、库文件和示例代码。然后选择合适的编程语言,如.NET Framework下的C#或VB.NET,创建项目并...
本文尝试利用ArcEngine与VC++6.0进行二次开发,实现对空间数据库中地理数据的访问、地形的二维渲染及分析功能。具体而言,通过调用ArcGISEngine提供的API,开发者可以实现数据读取、地图制作、三维分析、地理编码...
对象由类实例化产生,常见的AE类包括Point、Line、Polygon、Layer、Table等。 **COM详解** COM是Component Object Model的缩写,定义了组件间交互的标准,并提供组件运行所需的环境。它通常以win32 DLL或EXE形式...
在IT行业中,AO(ArcObjects)开发是一种针对地理信息系统(GIS)进行应用开发的技术,它由Esri公司提供,用于构建能够处理地图、空间数据和地理处理任务的定制化解决方案。ArcObjects是一套全面的COM组件,允许程序员...
8、ARCCIS开发(VBA,AO+VB,Arc-Engine+C#)及ARCCIS ENGINE与AO开发上机 主讲人:GIS硕士、南京路川公司专业技术开发工程师(空调机房) 9、ArcGIS二次开发——Arc-Engine点线面属性与空间相互查询 主讲人:GIS硕士...