这个过程就是制作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 )全网应该是唯一的相关推荐

  1. jquery插件制作

    jquery插件丰富,很多都是很好用的,最近学习了一下如何制作jquery插件,发现jquery插件制作其实很简单,这里介绍一下. jquery插件的基本格式: (function($){$.fn.t ...

  2. WordPress插件制作教程概述

    接下来的一段时间里,开始为大家讲解WordPress插件制作系列教程,这篇主要是对WordPress插件的一些介绍和说明,还有一些我们需要注意的地方,以及需要掌握的知识. WordPress插件允许你 ...

  3. DEDECMS模块插件制作举例-模块生成向导

    下面用一个企业招聘信息作为例子让大家熟悉一下DEDECMS的模块插件制作方法. 登录DEDECMS后台,打开模块管理->模块生成向导 模块名称:企业招聘信息 联系Email:redaug@qq. ...

  4. JQuery插件制作具有动态效果的网页

    JQuery插件 制作具有动态效果的网页   前  言 JQuery 今天我给大家介绍一个运用JQuery插件制作的动态网页--iphone 5C 宣传页面.这个网页中运用到了fullpage.js和 ...

  5. [手把手教]discuzX2插件制作教程__最菜鸟级别的入门坎 一

     绝世十二少 于 2011-10-17 10:49 编辑 终于也轮到我写教程指导后人了,在此感谢会员(sw08)的热心指导,同时也感谢曾经提供各种插件资料给我的论坛朋友们,是你们帮我跨过了插件的入门坎 ...

  6. 基于jQuery日历插件制作日历

    这篇文章主要介绍了基于jQuery日历插件制作日历的相关资料,需要的朋友可以参考下 来看下最终效果图吧: 是长得丑了一点,不要吐槽我-.- 首先来说说这个日历主要的制作逻辑吧: ·一个月份最多有31天 ...

  7. Xcode7 插件制作入门

    概述 我们平时也使用了很多的xcode插件,虽然官方对于插件制作没有提供任何支持,但是加载三方的插件,默认还是被允许的.第三方的插件,需要存放在 ~/Library/Application Suppo ...

  8. chrome谷歌浏览器插件制作简易教程

    1.在磁盘上创建一个目录,用来放应用的代码和资源 2.在这个目录中,创建一个文本文件,命名为manifest.json,其内容为: {"manifest_version": 2,& ...

  9. RPGMAKER游戏引擎基于JavaScript的插件制作(六)——重写方法(三):在场景(scenes)中创建精灵(Sprite)——复制式重写的实例教学

    因为要开新坑了,准备连续更新把这个插件制作的坑填完,之后更新的是"可交互精灵--事件绑定教学","窗口(windows)教学","自动战斗AI实现-- ...

最新文章

  1. Random在for以及foreach循环中产生相同随机数问题
  2. UVa1587 Box(排序)
  3. Java多线程-线程的同步与锁
  4. 虚函数实现多态---C++
  5. 自定义会话状态存储提供程序
  6. linux电脑管理员身份运行,在Ubuntu 20.04 LTS中添加“以管理员身份打开”
  7. java spring文件下载_SpringMVC实现文件上传和下载的工具类
  8. 悲剧!广电总局12月11日将封闭的网站目录!!!
  9. (九)DFI接口时序
  10. 获取高德地图省市区县列表
  11. PCF8591 A/D转换模块
  12. AudioManager 蓝牙sco连接相关接口
  13. Linux系统信号定义
  14. MindMapper中如何添加父主题
  15. 正则表达式匹配仅包含某些字符或者包含某些字符
  16. 9个相见恨晚的提升办公效率的网站!
  17. MSI(微星) GP62mvr Ubuntu16.04 + Opencv3.4.1配置教程
  18. HTML——背景属性
  19. Androidstudio的 制作微信导航栏 的 微信素材库
  20. CodeCraft-19 and Codeforces Round #537 (Div. 2)

热门文章

  1. 查看我的mysql_我的MYSQL学习心得(七) 查询
  2. js去掉第一个换行符_通过异步迭代简化Node.js流程
  3. SolrClient或SolrTemplate写入时连接solr服务器超时问题的一种解决方案
  4. Java基础-Lambda表达式
  5. Spring框架----Spring的bean的生命周期
  6. Spring Boot2
  7. Linux基本常用命令
  8. EZGUI下的动态图片的处理
  9. HDU 4515 推断时间
  10. sql server 2008新特性:资源调控器