已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Engine的MapControl控件在MFC下View中的使用王红亮Esri中国(北京)有限公司2010/01/271. 引言ArcGIS Engine的控件,如MapControl,在MFC框架下非Dialog模板,如Document/View/Frame结构下能不能使用,如何使用。按照我们以往的经验,此时的MapControl应该作为子窗口,继承自CWnd,并实现Create()成员函数,便能达到运行时创建的要求。那么我们要解决的问题也就明确了:创建一个继承自CWnd类,并对MapCotrol进行包装。本示例开发环境选用Visual Sudio 2008(Version 9.0.30729.1 SP,Visual Sudio 2010也有对应的工程和解决方案),语言采用C+,MFC技术;ArcEngine 10.0产品;Win7(64bit)操作系统。程序运行的效果如下:2. CMapControl窗口类的实现/*MapControl.h*/#pragma once/ ArcGIS Engine MapControl的封装类/ 作者:王红亮/单位:Esri中国(北京)有限公司/日期:/01/26/说明:本程序可自由引用、转载、发布,但请保留作者信息/ CMapControl wrapper classclass CMapControl : public CWndprotected:DECLARE_DYNCREATE(CMapControl)public:CLSID const& GetClsid()static CLSID const clsid= 0xC552EA94, 0x6FBB, 0x11d5, 0xA9, 0xC1, 0x0, 0x10, 0x4B, 0xB6, 0xFC, 0x1C ;return clsid;virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle,const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL) return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CFile* pPersist = NULL, BOOL bStorage = FALSE,BSTR bstrLicKey = NULL) return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,pPersist, bStorage, bstrLicKey); / default bAddRef is false because you dont need to addref/ when passing result to Feature.Attach();LPDISPATCH GetDispatch(BOOL bAddRef=FALSE);/ Attributespublic:/ Operationspublic:;/*MapControl.cpp*/#include stdafx.h#include MapControl.h/ CMapControl wrapper classIMPLEMENT_DYNCREATE(CMapControl, CWnd)LPDISPATCH CMapControl:GetDispatch(BOOL bAddRef)LPUNKNOWN pUnk = GetControlUnknown();LPDISPATCH pDispatch;if (pUnk != NULL) &SUCCEEDED(pUnk-QueryInterface(IID_IDispatch, (LPVOID*)&pDispatch) ASSERT(pDispatch != NULL);if (!bAddRef) pDispatch-Release();return pDispatch;return NULL;/ properties/operations说明:CMapControl窗口类实现的关键在于利用CreateControl(REFCLSID clsid, LPCTSTR pszWindowName,. )这个MFC中CWnd类的创建ActiveX控件的方法,其中参数clsid指ActiveX控件的GUID,每个ActiveX控件都有一个GUID。MFC对GUID数据结构作了如下的定义:typedef struct _GUID unsigned long Data1; unsigned short Data2; unsigned short Data3; unsigned char Data4 8 ; GUID;,通过OLE/COM Object Viewer(Visual Studio开发环境提供的工具),中的Type Libraries分支中的Esri Controls 10.0项内的coclass MapControl对象,很容易得到MapControl的GUID,C552EA94-6FBB-11D5-A9C1-00104BB6FC1C,于是我们把此ID依次填入GUID的数据结构中,便有了代码中的,static CLSID const clsid= 0xC552EA94, 0x6FBB, 0x11d5, 0xA9, 0xC1, 0x0, 0x10, 0x4B, 0xB6, 0xFC, 0x1C ;奥,原来是这样!3. CMapControl窗口类的使用在主视图类中,加入CMapControl类型的成员,及OnCreate()和OnSize()标准窗口消息的相应函数,如下:/AEViewTestView.h#include MapControl.hclass CAEViewTestView : public CView / 属性public:CAEViewTestDoc* GetDocument() const;CMapControl m_wndMap;/ 生成的消息映射函数protected:afx_msg void OnFilePrintPreview();afx_msg void OnRButtonUp(UINT nFlags, CPoint point);afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);afx_msg int OnCreate(LPCREATESTRUCT lpcs);afx_msg void OnSize(UINT nType, int cx, int cy);DECLARE_MESSAGE_MAP();/AEViewTestView.cppBEGIN_MESSAGE_MAP(CAEViewTestView, CView)/ 标准打印命令ON_COMMAND(ID_FILE_PRINT, &CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CAEViewTestView:OnFilePrintPreview)ON_WM_CREATE()ON_WM_SIZE()END_MESSAGE_MAP()/ CAEViewTestView 消息处理程序int CAEViewTestView:OnCreate(LPCREATESTRUCT lpcs)if(CView:OnCreate(lpcs) = -1)return -1;if(!m_wndMap.Create(NULL, WS_CHILD|WS_VISIBLE, CRect(0, 0, 100, 100), this, 10000)return -1;esriControls:IMapControl4Ptr pMapControl4;LPUNKNOWN lpUnknown = m_wndMap.GetControlUnknown();lpUnknown-QueryInterface(&pMapControl4);CString strMxd = _T(D:Program Files (x86)ArcGISTutorial DatausaUSA Base Map.mxd);pMapControl4-LoadMxFile(strMxd.AllocSysString();return 0;void CAEViewTest
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 白油装置操作工岗位环保责任制能力考核试卷含答案
- 电子电气产品能效检验员技术操作能力考核试卷含答案
- 课程顾问面试题及答案
- 11.蟋蟀的住宅教案
- 高比能锂离子动力电池系统充电策略与热失控安全的深度剖析与协同优化
- 高校贷款风险的多维审视与防控策略研究
- 高校突发事件预防的法律困境与破解路径研究
- 高校教育基金会运行激励机制:现状、问题与优化策略探究
- 高校师生关系新问题的深度剖析与应对策略
- 高校大学生心理档案管理模式的创新与实践研究
- 2026年贵州省初中学业水平考试数学试卷试题(含答案详解)
- 2023中国老年衰弱相关内分泌激素管理临床实践指南课件
- 弘扬教育家精神 争做新时代好教师
- 两票三制培训课件
- 招投标人员廉洁从业课件
- 甲状腺抗体课件
- 代付协议书模板
- 矿山隐蔽致灾因素普查规范课件
- 高中生暑假安全课件
- 2025年党建知识竞赛综合测试题库含答案
- 大连职业技术学院《小学语文课程标准与教材研究》2024-2025学年第一学期期末试卷
评论
0/150
提交评论