ZoomIn插件制作(VS2010 + arcObject10.2 )全网应该是唯一的
这个过程就是制作ArcMap插件的过程,说实话挺恶心的,为什么不用VS2013呢 ? 主要是环境有问题 。
Go! Let‘s do it!
一、 新建ATL项目 (项目命名Demo即可)
第二步 直接点完成、无需修改当中项:
第三步 右键当前项目Demo 添加类
选择“ATL简单对象”
点击添加 而后命名ZoomIn 简洁明白大方:
然后在接口处选择“自定义” 主要是为了后面实现ICommand接口
完成即可;
而后对Demo.idl 部分修改:
接下来是引入esri对象库文件(在stdafx.h当中引入):
#pragma warning(push)
#pragma warning(disable : 4192)//disables warning: automatically excluding 'name' while importing type library 'library'//import esriSystem.olb
#import "C:\Program Files (x86)\ArcGIS\Desktop10.2\com\esriSystem.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE", "VARTYPE", "XMLSerializer") rename("min","esrimin") rename("max","esrimax") rename("GetObject","esriGetObject") rename("GetJob","esriGetJob")//import esriSystemUI.olb
#import "C:\Program Files (x86)\ArcGIS\Desktop10.2\com\esriSystemUI.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_HANDLE", "OLE_COLOR")//import esriGeometry.olb
#import "C:\Program Files (x86)\ArcGIS\Desktop10.2\com\esriGeometry.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_HANDLE", "OLE_COLOR", "ISegment")//import esriDisplay.olb
#import "C:\Program Files (x86)\ArcGIS\Desktop10.2\com\esriDisplay.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_HANDLE", "OLE_COLOR") rename("RGB","esriRGB") rename("DrawText","esriDrawText") rename("ResetDC","esriResetDC") rename("CMYK","esriCMYK")//import esriGeoDatabase.olb
#import "C:\Program Files (x86)\ArcGIS\Desktop10.2\com\esriGeoDatabase.olb" raw_interfaces_only raw_native_types no_namespace named_guids rename("GetMessage","esriGetMessage")//import esriCarto.olb
#import "C:\Program Files (x86)\ArcGIS\Desktop10.2\com\esriCarto.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("UINT_PTR") rename("PostMessage","esriPostMessage")//import esriControls.olb
#import "C:\Program Files (x86)\ArcGIS\Desktop10.2\com\esriControls.olb" raw_interfaces_only raw_native_types no_namespace named_guids rename("DrawText","esriDrawText")
#import "C:\Program Files (x86)\ArcGIS\Desktop10.2\com\esriSystemUI.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids, auto_search
#import "C:\Program Files (x86)\ArcGIS\Engine10.2\com\esriSystemUI.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids, auto_search#pragma warning(pop)
然后转到类视图 右键CZoomIn ------> 添加 -----> 实现接口 (ICommand接口)
完成即可;
接下来就是对这些方法进行实现
转到ZoomIn.h 删除原因的方法块:
转到ZoomIn.cpp去实现这些方法
// ZoomIn.cpp : CZoomIn 的实现#include "stdafx.h"
#include "ZoomIn.h"
// CZoomIn
IHookHelperPtr m_ipHookHelper;
STDMETHODIMP CZoomIn::get_Enabled(VARIANT_BOOL *Enabled)
{if (Enabled == NULL)return E_POINTER;*Enabled = VARIANT_TRUE; // Enable the tool alwaysreturn S_OK;
}CZoomIn::CZoomIn()
{m_hBitmap = ::LoadBitmap(_AtlBaseModule.GetResourceInstance(), MAKEINTRESOURCE(IDB_BITMAP1));
}STDMETHODIMP CZoomIn::get_Name(BSTR *Name)
{if (Name == NULL)return E_POINTER;*Name = ::SysAllocString(L"ZoomInDu");return S_OK;
}STDMETHODIMP CZoomIn::get_Caption(BSTR *Caption)
{if (Caption == NULL)return E_POINTER;*Caption = ::SysAllocString(L"ZoomIn*Du");return S_OK;
}STDMETHODIMP CZoomIn::get_Category(BSTR *Category)
{if (Category == NULL)return E_POINTER;*Category = ::SysAllocString(L"GisTools");return S_OK;
}STDMETHODIMP CZoomIn::get_Bitmap(OLE_HANDLE *Bitmap)
{if (Bitmap == NULL)return E_POINTER;*Bitmap = (OLE_HANDLE)m_hBitmap;return S_OK;
}STDMETHODIMP CZoomIn::OnCreate(IDispatch *hook)
{m_ipHookHelper.CreateInstance(CLSID_HookHelper);HRESULT hr = m_ipHookHelper->putref_Hook(hook);return hr;
}STDMETHODIMP CZoomIn::OnClick()
{// HRESULT checking omitted for clarityIActiveViewPtr ipActiveView;m_ipHookHelper->get_ActiveView(&ipActiveView);IEnvelopePtr ipEnv;ipActiveView->get_Extent(&ipEnv);ipEnv->Expand(0.5, 0.5, VARIANT_TRUE);ipActiveView->put_Extent(ipEnv);ipActiveView->Refresh();return S_OK;
}
最后去注册 在ZoomIn.h当中
然后设置启动程序 在项目右键属性 调试 选择ArcMap.EXE作为启动程序即可。
而后启动调试
自定义----》 从文件添加 选择dll即可
现在ok了~ 可以添加工具在菜单栏即可使用。。
ZoomIn插件制作(VS2010 + arcObject10.2 )全网应该是唯一的相关推荐
- jquery插件制作
jquery插件丰富,很多都是很好用的,最近学习了一下如何制作jquery插件,发现jquery插件制作其实很简单,这里介绍一下. jquery插件的基本格式: (function($){$.fn.t ...
- WordPress插件制作教程概述
接下来的一段时间里,开始为大家讲解WordPress插件制作系列教程,这篇主要是对WordPress插件的一些介绍和说明,还有一些我们需要注意的地方,以及需要掌握的知识. WordPress插件允许你 ...
- DEDECMS模块插件制作举例-模块生成向导
下面用一个企业招聘信息作为例子让大家熟悉一下DEDECMS的模块插件制作方法. 登录DEDECMS后台,打开模块管理->模块生成向导 模块名称:企业招聘信息 联系Email:redaug@qq. ...
- JQuery插件制作具有动态效果的网页
JQuery插件 制作具有动态效果的网页 前 言 JQuery 今天我给大家介绍一个运用JQuery插件制作的动态网页--iphone 5C 宣传页面.这个网页中运用到了fullpage.js和 ...
- [手把手教]discuzX2插件制作教程__最菜鸟级别的入门坎 一
绝世十二少 于 2011-10-17 10:49 编辑 终于也轮到我写教程指导后人了,在此感谢会员(sw08)的热心指导,同时也感谢曾经提供各种插件资料给我的论坛朋友们,是你们帮我跨过了插件的入门坎 ...
- 基于jQuery日历插件制作日历
这篇文章主要介绍了基于jQuery日历插件制作日历的相关资料,需要的朋友可以参考下 来看下最终效果图吧: 是长得丑了一点,不要吐槽我-.- 首先来说说这个日历主要的制作逻辑吧: ·一个月份最多有31天 ...
- Xcode7 插件制作入门
概述 我们平时也使用了很多的xcode插件,虽然官方对于插件制作没有提供任何支持,但是加载三方的插件,默认还是被允许的.第三方的插件,需要存放在 ~/Library/Application Suppo ...
- chrome谷歌浏览器插件制作简易教程
1.在磁盘上创建一个目录,用来放应用的代码和资源 2.在这个目录中,创建一个文本文件,命名为manifest.json,其内容为: {"manifest_version": 2,& ...
- RPGMAKER游戏引擎基于JavaScript的插件制作(六)——重写方法(三):在场景(scenes)中创建精灵(Sprite)——复制式重写的实例教学
因为要开新坑了,准备连续更新把这个插件制作的坑填完,之后更新的是"可交互精灵--事件绑定教学","窗口(windows)教学","自动战斗AI实现-- ...
最新文章
- Random在for以及foreach循环中产生相同随机数问题
- UVa1587 Box(排序)
- Java多线程-线程的同步与锁
- 虚函数实现多态---C++
- 自定义会话状态存储提供程序
- linux电脑管理员身份运行,在Ubuntu 20.04 LTS中添加“以管理员身份打开”
- java spring文件下载_SpringMVC实现文件上传和下载的工具类
- 悲剧!广电总局12月11日将封闭的网站目录!!!
- (九)DFI接口时序
- 获取高德地图省市区县列表
- PCF8591 A/D转换模块
- AudioManager 蓝牙sco连接相关接口
- Linux系统信号定义
- MindMapper中如何添加父主题
- 正则表达式匹配仅包含某些字符或者包含某些字符
- 9个相见恨晚的提升办公效率的网站!
- MSI(微星) GP62mvr Ubuntu16.04 + Opencv3.4.1配置教程
- HTML——背景属性
- Androidstudio的 制作微信导航栏 的 微信素材库
- CodeCraft-19 and Codeforces Round #537 (Div. 2)