vs2010 vc++开发引用 ArcEngine9.3 组件和AO对象实例化方法

原创 2012年03月22日 18:00:12

vs2010 vc++开发引用 ArcEngine9.3 组件和AO对象实例化方法

//stdafx.h文件最下面添加如下代码

//添加ArcEngine dll引用


#pragma warning(push)
#pragma warning(disable : 4192) /* Ignore warnings for types that are duplicated in win32 header files */
#pragma warning(disable : 4146) /* Ignore warnings for use of minus on unsigned types */
 
#import "D:/Program Files/ArcGIS/com/esriSystem.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids, exclude("OLE_COLOR", "OLE_HANDLE", "VARTYPE")
#import "D:/Program Files/ArcGIS/com/esriSystemUI.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids,exclude("OLE_COLOR","ICommand","IProgressDialog")
#import "D:/Program Files/ArcGIS/com/esriGeometry.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids,exclude("OLE_COLOR")
#import "D:/Program Files/ArcGIS/com/esriDisplay.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids,exclude("OLE_COLOR")
#import "D:/Program Files/ArcGIS/com/esriOutput.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids,exclude("OLE_COLOR")
#import "D:/Program Files/ArcGIS/com/esriGeoDatabase.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids,exclude("OLE_COLOR","IRow","ICursor")
#import "D:/Program Files/ArcGIS/com/esriCarto.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids,exclude("OLE_COLOR","ITableDefinition","UINT_PTR")
 
 
// additionally for 3D controls
#import "D:/Program Files/ArcGIS/com/esri3DAnalyst.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids
#import "D:/Program Files/ArcGIS/com/esriGlobeCore.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids
#import "D:/Program Files/ArcGIS/bin/SceneControl.ocx" raw_interfaces_only, raw_native_types, no_namespace, named_guids
#import "D:/Program Files/ArcGIS/bin/GlobeControl.ocx" raw_interfaces_only, raw_native_types, no_namespace, named_guids
 
#pragma warning(pop)


//MainFrm.cpp 文件中

//int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)方法中添加如下代码

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWndEx::OnCreate(lpCreateStruct) == -1)
return -1;


//=AO对象实例化
//-------------------------------------
IAoInitializePtr m_AoInit(CLSID_AoInitialize);// new AoInitializeClass();
esriLicenseStatus ls;
m_AoInit->Initialize(esriLicenseProductCode::esriLicenseProductCodeArcServer,&ls);


CString path=L"";
IPropertySetPtr ipPropertySet(CLSID_PropertySet);
    ipPropertySet->SetProperty(CComBSTR(L"DATABASE"),CComVariant(path));
//
//CComPtr<IWorkspaceFactory> ipWorkspaceFactory;
    //ipWorkspaceFactory.CoCreateInstance(CLSID_ShapefileWorkspaceFactory);
//
//IFeatureLayerPtr ipFeatureLayer;
    //HRESULT hr = ipFeatureLayer.CreateInstance(CLSID_FeatureLayer);
//-------------------------------------
BOOL bNameValid;
// 基于持久值设置视觉管理器和样式

        //.....

}

CMainFrame::~CMainFrame()
{
IAoInitializePtr m_AoInit(CLSID_AoInitialize);
esriLicenseStatus ls;
m_AoInit->CheckInExtension(esriLicenseExtensionCode::esriLicenseExtensionCodeSpatialAnalyst,&ls);
m_AoInit->CheckInExtension(esriLicenseExtensionCode::esriLicenseExtensionCodeDataInteroperability,&ls);
    m_AoInit->CheckInExtension(esriLicenseExtensionCode::esriLicenseExtensionCode3DAnalyst,&ls);


m_AoInit->Shutdown();
m_AoInit=NULL;
}


int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWndEx::OnCreate(lpCreateStruct) == -1)
return -1;


//=AO对象实例化
//-------------------------------------
IAoInitializePtr m_AoInit(CLSID_AoInitialize);// new AoInitializeClass();
esriLicenseStatus ls;
m_AoInit->Initialize(esriLicenseProductCode::esriLicenseProductCodeArcServer,&ls);
m_AoInit->CheckOutExtension(esriLicenseExtensionCode::esriLicenseExtensionCode3DAnalyst,&ls);
m_AoInit->CheckOutExtension(esriLicenseExtensionCode::esriLicenseExtensionCodeDataInteroperability,&ls);
m_AoInit->CheckOutExtension(esriLicenseExtensionCode::esriLicenseExtensionCodeSpatialAnalyst,&ls);


CString path=L"";
IPropertySetPtr ipPropertySet(CLSID_PropertySet);
    ipPropertySet->SetProperty(CComBSTR(L"DATABASE"),CComVariant(path));


//MessageBox("")/m_AoInit->
//
//CComPtr<IWorkspaceFactory> ipWorkspaceFactory;
    //ipWorkspaceFactory.CoCreateInstance(CLSID_ShapefileWorkspaceFactory);
//
//IFeatureLayerPtr ipFeatureLayer;
    //HRESULT hr = ipFeatureLayer.CreateInstance(CLSID_FeatureLayer);
//-------------------------------------
BOOL bNameValid;
// 基于持久值设置视觉管理器和样式

..

}


C++调用ArcEngine(C#)动态链接库

用C#语言开发ArcEngine,并生成dll,在C++中调用C#生成的dll
  • yaluoshan
  • yaluoshan
  • 2017年03月10日 11:28
  • 763

ArcEngine10.0+VS2010+MFC 扫盲贴

项目用vc6.0+MapObject写的,现在却要升级成AE10,研究了好多天的AE10.0和c++,中间的曲折也不想多说了,废话少数,下面是实现ArcEngine基本功能的,仅供参考,如能帮到同仁们...
  • yiersl
  • yiersl
  • 2013年11月21日 11:27
  • 7457

arcEngine 经典代码(转)

arcEngine 经典代码(转)画点[C#]public void OnMouseDown(int Button, int Shift, int X, int Y){  IMxDocument mx...
  • GISSTAR
  • GISSTAR
  • 2010年09月06日 09:51
  • 2189

unity3d引用和实例化对象的方法

利用脚本组件的public变量把prefabs拖入到对象相应脚本组件的public变量中,如下图然后在脚本中写如下代码:public class explosionScript : MonoBehav...
  • wanglining1987
  • wanglining1987
  • 2017年07月13日 12:12
  • 1022

VC调用COM组件的几种方式

这个网上都有现成的,我就不说原创了,否则就太没脸了,但是经过笔者的测试,都成为可用的。尽可能的写成傻瓜式的教程,让大家都有些成就感的同时学到东西 现在说明下环境WIN7+VS2010,我的com组件...
  • dasgk
  • dasgk
  • 2013年07月04日 21:24
  • 1727

arcgis AO 和AE的区别

原文地址:转:ArcObjects与ArcEngine作者:梦游      ArcObjects(简称AO),一般都是指ArcGIS Desktop版本的组件开发集,即需要安装ArcGIS桌面版...
  • jiangbingbo123
  • jiangbingbo123
  • 2015年07月30日 08:37
  • 1704

深入理解javascript中的AO对象

1.主要理解一点,里面的scope属性就先保存了所有父级环境的AO对象,这个scope属性是静态的,除非函数被销毁,否则从函数创建时就已经存在。 2.函数运行时会创建变量,将在scope属性中加入自身...
  • Limitless1113
  • Limitless1113
  • 2015年05月12日 07:09
  • 1237

vs2010引用office组件后的编辑并继续

最近在使用Visual Studio.net 2010(简称vs2010)做一个项目,引用了Office的组件,在调试过程中,对代码进行修改时,总是会弹出如下对话框:           ...
  • bighero4
  • bighero4
  • 2015年01月04日 11:38
  • 2333

声明对象和实例化对象的区别

声明对象和实例化对象的区别
  • bestcxx
  • bestcxx
  • 2015年11月04日 11:17
  • 3732

对象实例化-new & getInstance()方法

首先声明一下的是对于抽象类,要想对其实例化,只能用getInstance方法,是不能用new的. 单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必...
  • hnxw1117
  • hnxw1117
  • 2014年02月14日 11:29
  • 1329
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:vs2010 vc++开发引用 ArcEngine9.3 组件和AO对象实例化方法
举报原因:
原因补充:

(最多只允许输入30个字)