77范文网 - 专业文章范例文档资料分享平台

二次开发初级培训班培训讲义(7)

来源:网络收集 时间:2019-03-29 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

由于编辑功能大都需要根据鼠标和键盘消息进行,所以用户需要将鼠标和键盘的消息传送给EDITWND。因此,使用编辑函数库时必须正确设置和使用以下几个函数。

2.2基本消息处理函数

以下九个函数是图形编辑函数库的基本函数,必须在相应的位置使用这些函数进行初始化工作,其它相应的编辑功能函数才能正常工作。从第二节开始的所有二百四十多个功能函数相应完成MAPGIS编辑系统的二百四十多项功能,您只要象下面的示例程序一样,在您需要的时候调用各功能函数就能完成您所需要的功能。函数详细说明见二次开发手册第七章。

1)_CreatEditWindow

2)_DeleteEditWindow 3)_CloseEditWindow 4)_edProcCommand 5)_edProcMouse 6)_edProcKey 7)_edProcPaint 8)_edProcSize 9)_edProcTimer

2.3示列

见二次开发手册271面例子。

3.MAPGIS类库开发

3.1 类库结构介绍

MAPGIS二次开发类库是建立在MAPGIS API之上的一个类库层,用于支持基于MFC类库的面向对象的Windows程序设计。MAPGIS二次开发类库,提供了一套强有力的C++类,它屏蔽了基于MAPGIS API之上开发MAPGIS 实用程序的许多复杂性,同时仍然允许有经验的程序员使用底层的MAPGIS API功能。如何有效地使用这个类库,且看下面介绍。

CView CGisView CGisEditView CPrjEditView CListView

CListVewEx CPrjListView CGisView类继承了Visual C++的CView类,它封装了窗口管理的各种功能及操作,它管理了窗口的图形显示参数、操作状态,滚动条的位置、范围等基本窗口属性,以及放大窗口、缩小窗口、移动窗口、显示范围、显示比例、坐标转换等功能。CGisView 类还支持窗口的保护和快速恢复等功能。CGisView类是MAPGIS类库中大多数类的基类。

CGisEditView 类继承了CGisView 类。它封装了MAPGIS编辑处理的基本数据对象和方法。包括几乎所有的点、线、区的编辑功能以及图层的处理函数、矢量化函数、节点平差函数、数字化函数、最基本的文件操作功能。CGisEditView类及其基类组成了十分强大的图形编辑函数库。

用户开发自己的软件时最好是继承CGisEditView类,这样用户可以同时使用BaseEditWindow 、CGisView 、CGisEditView类及VC++的Cview类所提供的所有功能。

CPrjEditView类继承了CGisEditView 类,它集成了对工程文件进行编辑处理所必需的数据对象的方法,具有对整个工程文件的各个文件编辑处理功能。

CPrjListView类继承了CListView 类,它是CListView的派生类,它集成了对工程文件进行控制处理所必需的数据对象的方法,具有对整个工程文件内容及各个文件状态的处理功能。

3.2 类库开发示例

使用VC++开发MAPGIS应用程序的最快速有效的方法就是使用MAPGIS类库。这些类已经为用户的程序与MAPGIS操作平台的接口做好了准备,用户可以体会到使用这些类可以很容易地实现MAPGIS系统里的功能,而且在实现MAPGIS系统功能的基础上用户还可以随意地添加自己想要的功能。下面我们以CGisEditView类为例讲述如何构造一个简单的MAPGIS图形编辑器的方法和基本步骤。

第一步、建一个Visual C++的项目。打开Visual C++工作环境,选择File菜单New命令,在弹出的对话框中选择Projects页的MFC AppWizard(EXE)项并在Project name编辑框中敲入工程名(例如:engineer),然后单击OK。这样便进入了AppWizard(向导)的第一步,在这一步里用户要选择工程类型,可以选择单文档或多文档工程(基于对话框的工程不适合我们建MAPGIS工程),初学者最好选单文档类型;单击Next进入向导的第二步、第三步、直到完成(Finish之后OK),这几步用户可以采用默认设置。到此为止一个VC的项目已建好,然后用户的工作就是在这个项目中实现MAPGIS平台中的功能及自己想要的其他功能。

第二步、包含MAPGIS头文件 #include “MAPGIS.h”,最好是加在STDAFX.H头文件中,这样我们只需要加入一次头文件;当然,你也可以在用到MAPGIS的时候加入此头文件。 第三步、要完成的工作是将工程中的视图类的基类改为CGisEditView类。具体操作是打开工程中的视图类的两个文件(*View.h、*View.cpp),用Visual C++查找替换功能(Edit菜单下的Rplace命令或热键Ctrl+H)分别将这两个文件中的CView字符串全部替换为CGisEditView,

第四步、在视类的OnDraw()函数中调用CGisEditView类中的OnDraw(pDC)函数,以完成绘图工作的预先处理。具体操作方法:在视图类的OnDraw(CDC* pDC)函数中加语句CGisEditView::OnDraw(pDC)。见下面示例:

void CEngineerView::OnDraw(CDC* pDC)

{

CEngineerDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc); // TODO: add draw code for native data here CGisEditView::OnDraw(pDC);

}

第五步、在视类中增加显示成员函数:DispAllMap(MyDC mdc);见下面示例: void CEngineerView::DispAllMap(MyDC mdc) { //在此处做所有的图形显示工作 }

第六步、在视类中增加背景绘制成员函数:DrawBackground (MyDC mdc);在这个函数中可以对窗口的背景进行渲染、绘制;见下面示例:

void CEngineerView:: DrawBackground (MyDC mdc)

{ }

3.3 CGisView类概述

CGisView类继承了Visual C++的CView类,它封装了与图形显示有关的操作,如放大窗口、缩小窗口、移动窗口、显示范围、显示比例、坐标转换、闪烁图元等功能。

文件说明

说明头文件: mapgissdk60\\include\\CGisView.h

连接静态库: mapgissdk60\\lib\\ w60operD.lib (Debug版本)

mapgissdk60\\lib\\ w60oper.lib (Release版本)

执行动态库: mapgissdk60\\dll\\ w60operD.dll (Debug版本) mapgissdk60\\dll\\ w60oper.dll (Release版本) 3.4 CGisEditView类概述

CGisEditView类继承了CGisView 类和BaseEditWindow类,它封装了几乎所有的点、线、区的编辑功能以及图层的处理函数、矢量化函数、数字化函数。CGisEditView类及其基类组成了十分强大的图形编辑函数库。

使用CGisEditView类 首先,用Visual C++新建一个项目,项目中的视图类必须继承CGisEditView类(可以

//在此处做窗口背景的绘制

用Visual C++查找替换的功能来完成,替换完不要忘记#include “cgisedit.h”)。 第二步,在视图类的OnDraw(CDC* pDC)函数中加语句CGisEditView::OnDraw(pDC); 在OnDraw(CDC* pDC)函数中就不必再做其他处理。

第三步,在视图类中必须添加成员函数void _OwnerDraw(MyDC mydc);因为在MapGis系统中的图形显示是在_OwnerDraw(MyDC mydc)函数中完成的,而不是在OnDraw(CDC* pDC)函数中完成。用户可以在_OwnerDraw(MyDC mydc)函数中完成自己的图形显示工作,但建议用户最好还是调用基类中的_OwnerDraw(MyDC mydc)函数,它会自动完成点、线、区的显示;当然用户也可以在调用_OwnerDraw(MyDC mydc)函数的基础上再添加自己的显示语句。 第四步,在VC的workspace窗口FileView标签中加入MapGis二次所需的.Lib库文件。 完成这几步用户就可以随意地使用CGisEditView类及其基类中的函数设计自己的图形软件了。 文件说明

说明头文件: mapgissdk60\\include\\CGisEdit.h

连接静态库: mapgissdk60\\lib\\ maped6D.lib (Debug版本) mapgissdk60\\lib\\ maped60.lib (Release版本) 执行动态库: mapgissdk60\\dll\\ maped6D.dll (Debug版本)

mapgissdk60\\dll\\ maped60.dll (Release版本)

3.5 CPrjEditView类概述

CPrjEditView类继承了CGisEditView 类,它是CGisEditView的派生类,它集成了对工程文件进行编辑处理所必需的数据对象的方法,具有对整个工程文件中各个工作区的编辑处理功能。

文件说明

说明头文件: mapgissdk60\\include\\CPrjEdit.h

连接静态库: mapgissdk60\\lib\\ maped6D.lib (Debug版本) mapgissdk60\\lib\\ maped60.lib (Release版本) 执行动态库: mapgissdk60\\dll\\ maped6D.dll (Debug版本)

mapgissdk60\\dll\\ maped60.dll (Release版本)

3.6 CPrjListView类概述

CPrjListView类继承了CListView 类,它是CListView的派生类,它集成了对工程文件进行控制处理所必需的数据对象的方法,具有对整个工程文件内容及各个文件状态的处理功能

他类似于Visual C++的WorkSpace管理器,负责添加/删除/修改工程中各项目的内容,并实现与工程相关的一些操作和处理。他和CPrjEditView联合起来使用,公共一个MAPPROJECT数据源,可实现工程的所有管理和显示/编辑的功能。

利用CPrjListView和CPrjEditView可快速搭建VC环境下的MAPGIS编辑框架和实现其功能(例:MAPGIS编辑器就是此两类实现的),利用CPrjListView和CPrjEditView其对应的控件也可在VB或Delphi等可视化程度更高的开发环境下更高效地实现MAPGIS的编辑功能。

文件说明

说明头文件: mapgissdk60\\include\\PrjListView.h

连接静态库: mapgissdk60\\lib\\ PrjVw60D.lib (Debug版本) mapgissdk60\\lib\\ PrjVw60.lib (Release版本) 执行动态库: mapgissdk60\\dll\\ PrjVw60D.dll (Debug版本) mapgissdk60\\dll\\ PrjVw60.dll (Release版本)

4.MAPGIS控件开发

4.1 控件结构介绍

MAPGIS基于控件的应用程序开发是MAPGIS提供的一种更加快速和高效的开发方法。MAPGIS提供了一整套强有力的控件支持,范围从工程的编辑,工程的输出到工程的管理。且看下面介绍。

1)工程编辑和输出控件

文件: ActxEdit.OCX 控件: GisEdit 文件: GisCtrl.OCX 控件: MapGisCtrl

2)工程管理控件

控件: MapProjectOut 控件 MapPublishOut 控件: MapRastOut

文件: PrjList.OCX 控件: PrjList 3)属性编辑控件

文件: EditGisAtt.OCX 控件: EditGisAtt

MAPGISCTRL控件是MAPGIS中基本的图形显示控件,与工作区显示有关的控件是以他为基础继承而来的。

GISEDIT控件是MAPGIS基本的工程图形编辑控件,是由MAPGISCTRL控件派生而来的,其数据基础是工程对象。它封装了最基本的文件操作功能、线编辑功能、区编辑功能、点编辑功能、图层处理函数、库编辑函数、矢量化、节点平差等函数。它集成了MAPGIS编辑处理的基本数据对象和方法。

MAPPROJECTOUT / MAPPUBLISHOUT / MAPRASTOUT控件是MAPGIS基本的工程图形输出控

件,是由MAPGISCTRL控件派生而来的。它们封装了最基本的输出操作功能,针对不同的输出文件类型它又分为a.MapProjectOut——对工程文件(*.mpj)的输出处理;b.MapPublishOut ——对拼版文件(*.mpb)的输出处理;c. MapRastOut ——对光栅类文件(*.nv1)的输出处理。

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库二次开发初级培训班培训讲义(7)在线全文阅读。

二次开发初级培训班培训讲义(7).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/555315.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: