mapgis二次开发培训教程6664.docx

上传人:you****now 文档编号:68361370 上传时间:2022-12-27 格式:DOCX 页数:322 大小:1.61MB
返回 下载 相关 举报
mapgis二次开发培训教程6664.docx_第1页
第1页 / 共322页
mapgis二次开发培训教程6664.docx_第2页
第2页 / 共322页
点击查看更多>>
资源描述

《mapgis二次开发培训教程6664.docx》由会员分享,可在线阅读,更多相关《mapgis二次开发培训教程6664.docx(322页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、MAPGIS二次开发培教程前言MAPGIS是武汉中地信息工程有限公司研制的具有自主版权的大型基础地理信息系统平台。它是一个集当代最先进的图形、图像、地质、地理、遥感、测绘、人工智能、计算机科学于一体的大型智能软件系统,是集数字制图、数据库管理及空间分析为一体的空间信息系统,是进行现代化管理和决策的先进工具。MAPGIS连续四年在全国GIS测评中名列第一,并成为唯一连续四年获得国家科技部向社会推荐的国产GIS软件平台。中地软件丛书之MAPGIS二次开发培训教程是根据最新推出的MAPGIS软件平台编写而成,主要介绍进行MAPGIS二次开发必须具备的基础知识、主流开发工具以及MAPGIS系统的基本概

2、念、结构体系和操作方法。该教程分为三个部分,共十一讲。其中:第一部分(即即第一讲讲的内容容):介介绍Wiindoows编编程的概概念。包包括类与与数据封封装、继继承、重重载、虚虚拟函数数与多态态性以及及内存管管理。该该部分为为可视化化编程的的基础,有有可视化化编程经经验的读读者可以以略过此此讲,直直接进入入下一部部分的学学习。第二部分(即即第二讲讲的内容容):编编程工具具VC。对对于在VVC这样样一个编编程环境境中开发发应用程程序所应应熟悉的的概念,术术语和最最基本的的框架、构构件实现现过程等等知识做做了一个个简明扼扼要的介介绍。已已掌握一一定VCC编程基基础知识识的读者者可以略略过该部部分。

3、第三部分(即即第三讲讲至第十十一讲的的内容):详细讲讲述了地地理信息息系统的的基本概概念(包包括GIIS原理理概述、空空间数据据类型、空空间数据据库、空空间数据据结构与与数据管管理等内内容);MAPPGISS的基本本概念和和体系结结构(简简要描述述了MAAPGIIS二次次开发的的基本概概念、术术语、工工作区、空空间实体体及其数数据、CC+类类组织和和开发环环境介绍绍的内容容);MMAPGGIS空空间数据据存取和和属性编编辑(包包括工作作区、空空间实体体和属性性的操作作及其网网络介绍绍);图图形显示示输出及及窗口操操作、图图形编辑辑、类库库和控件件开发;矢量空空间分析析和属性性查询;投影变变换、

4、图图框生成成和工程程管理;图库管管理和查查询系统统(包括括基于图图库的应应用程序序开发、MAPGIS图库介绍、开发的一般步骤以及结合图库显示说明图库主要函数的功能等方面的内容)以及图象分析与处理。这一部分为本教程的主要部分,能使大家从了解到熟练掌握这个部分的内容也是我们编制本书的主要目的,同时它还可被作为MAPGIS二次开发过程中的参考来使用。参加本书编编写的人人员主要要是本系系统的软软件开发发人员以以及长期期从事MMAPCCAD和和MAPPGISS培训的的教师。由由于时间间仓促,书书中难免免存在错错误和不不当之处处,敬请请广大用用户及读读者提出出宝贵意意见和建建议,以以利改进进。中地软件丛丛

5、书编委委会 220011年10月目 录第一讲基于于WINNDOWWS编程程的基础础知识111.1引言言11.2类与与数据封封装11.3继承承21.4重载载41.5虚拟拟函数与与多态性性5第二讲编程程工具VVC82.1熟悉悉VC开发发环境882.2消息息与命令令82.3文档档、视结结构1002.4图形形设备接接口1112.5对话话框和控控件1222.6编程程规范113第三讲地理理信息系系统基本本概念1153.1 GGIS原原理概述述153.2 GGIS空空间数据据类型1173.3 GGIS数数据管理理183.4空间间分析2203.5地理理信息系系统发展展20第四讲 MMAPGGIS的的基本概概念

6、和体体系结构构224.1 MMAPGGIS二二次开发发的基本本概念2224.2 MMAPGGIS基基本术语语234.3 MMAPGGIS的的数据管管理(工工作区)254.4 MMAPGGIS的的空间实实体及其其数据组组织2774.5 MMAPGGIS的的C+类组织织294.6 MMAPGGIS的的VC+开发发环境介介绍300第五讲 MMAPGGIS空空间数据据存取和和属性编编辑3225.1工作作区操作作325.2空间间实体操操作3445.3属性性(属性性结构)操操作3775.4网络络介绍444第六讲图形形显示输输出及窗窗口处理理456.1图形形显示输输出4556.2窗口口处理4496.3类库库

7、开发中中的图形形显示和和窗口处处理511第七讲图形形编辑、类类库和控控件开发发537.1图形形编辑开开发概要要537.2图形形编辑AAPI函函数开发发537.3 MMAPGGIS类类库开发发547.4 MMAPGGIS控控件开发发60第八讲矢量量空间分分析和属属性查询询668.1矢量量空间分分析6668.2属性性查询检检索711第九讲投影影变换和和图框生生成7339.1投影影变换(proojdlll.hh、corrdcvvt.hh)7339.2图框框生成(frmmdlll32.h)883第十讲图库库管理和和工程管管理91110.1 MAPPGISS图库简简介91110.2基基于图库库的应用用程

8、序的的开发99210.3结结合图库库的显示示说明图图库中主主要函数数的功能能9210.4工工程管理理(prrj_ddispp.h和和mapp_prrj.hh)966第十一讲 MAPPGISS图象处处理和分分析100111.1遥遥感图象象处理的的基本知知识100111.2处处理方法法101111.3主主要APPI 介介绍99911.4组组件介绍绍107711.5在在VC中的的开发过过程(结结合示例例程序讲讲解)110811.6示示例程序序说明1109附录 MAAPGIIS 二二次开发发问题集集锦11101.属性和和属性结结构11102.空间实实体操作作问题11233.显示、编编辑问题题12444

9、.空间分分析问题题13115.数字高高程模型型13116.安装问问题13347.工程问问题13358.输出问问题13369.其它1138第一讲 基于WINDOWS编程的基础知识第一讲 基基于WIINDOOWS编编程的基基础知识识1.1引言言1.1.11 过程程化(pprocceduurall prrogrrammmingg):程序被认为为是在一一个数据据集合上上进行的的一系列列操作。1.1.22 结构构化(sstruuctuuredd prrogrrammmingg):主要思想是是:功能能分解并并逐步求求精。1.1.33 面向向对象的的程序设设计(oobjeect_oriientted pro

10、ograammiing):实质是把数数据和处处理这些些数据的的过程合合并为一一个单独独的“对象”一个个具有确确定特性性的自完完备的实实体。1.1.44 面向向对象程程序设计计的特征征:1) 封装装2) 继承承3) 多态态1.2类与与数据封封装1.2.11 什么么是类?简单的说,类类就是一一种用户户定义的的数据类类型,跟跟结构类类似;并并且,类类具有自自己的成成员变量量和成员员函数(方方法),通通过它们们可以对对类自身身进行操操作。如如:汽车车可以看看作是发发动机、车车轮、座座椅等诸诸如此类类的集合合。也可可以从功功能的角角度来研研究,譬譬如,能能移动,加加速,减减速,刹刹车等。例如:class

11、s CMMyCllasss1proteecteed:CMyCClasss1();publiic:virttuall CMyyClaass11();1.2.22封装(eencaapsuulattionn)定义:指能能够把一一个实体体的信息息、功能能、响应应都装入入一个单单独的对对象中的的特性。封封装的优优点如下下:1) 封装装允许类类的客户户不必关关心类的的工作机机理就可可以使用用它。就就象驾驶驶员不必必了解发发动机的的工作原原理就可可以驾驶驶汽车一一样,类类的客户户在使用用一个类类时也不不必了解解它是如如何工作作的,而而只需了了解它的的功能即即可。2) 所有有对数据据的访问问和操作作都必须须通

12、过特特定的方方法,否否则便无无法使用用,从而而达到数数据隐藏藏的目的的。1.2.33对象对象就是类类的实例例。类与与对象的的关系就就如类型型和变量量的关系系,所有有对类的的操作都都必须通通过对象象来实现现。当一一个类定定义了多多个对象象时,每每个对象象拥有各各自的成成员数据据。1.2.44 类的的三种成成员类型型1) 私有有成员(priivatte):缺省情情况下,一一个类中中的所有有成员都都是私有有的。私私有成员员只能被被类本身身的成员员函数访访问。并并且不具具有继承承性。2) 公有有成员(pubblicc):公公有成员员可以被被类成员员函数和和外部函函数使用用。3) 保护护成员(proot

13、ecctedd):类类的保护护成员能能被类及及其派生生类的成成员函数数和友员员函数使使用,具具有继承承性。1.2.55 构造造函数与与析构函函数1)构造函函数a. 是特特殊的成成员函数数;在创创建对象象时首先先由系统统自动调调用。它它的作用用是为新新创建的的对象分分配空间间,或为为该对象象的成员员变量赋赋值等;b. 构造造函数名名必须与与其类名名称完全全相同,并并且不允允许有返返回值。2)析构函函数a. 析构构函数是是构造函函数的逆逆操作;b. 析构构函数在在类名之之前加来命名名,它不不允许有有返回值值,也不不允许带带参数,并并且一个个类只能能有一个个析构函函数。1.3继承承1.3.11 传统

14、统程序设设计的缺缺点:增加功能对对程序所所作的修修改工作作量非常常大。1.3.22 继承承的优点点:继承的方法法允许在在不改动动原程序序的基础础上对其其进行扩扩充,这这样使得得原功能能得以保保存,而而新功能能也得以以扩展。这这有利于于减少重重复编码码,提高高软件的的开发效效率。1.3.33 基类类与派生生类1)一个类类可以继继承其它它类的成成员,被被继承的的类叫基基类或父类;继继承类叫叫派生类类或子类2)派生类类不但拥拥有自己己的成员员变量和和成员函函数,还还拥有父父类的成成员变量量和成员员函数。1.3.44 类的的保护成成员(pprottectted)前面介绍了了类的私私有成员员只能被被类的

15、成成员函数数和友员员函数使使用;类类的保护护成员能能被类及及其派生生类的成成员函数数和友员员函数使使用。也也就是说说,类的的保护成成员具有有继承性性,而类类的私有有成员不不具有继继承性。1.3.55 公用用基类和和私有基基类1)公用基基类中的的所有ppubllic成成员在派派生类中中仍是ppubllic成成员,所所有prroteecteed成员员在派生生类中仍仍是prroteecteed成员员。2)私有基基类中的的pubblicc成员和和prootecctedd成员在在派生类类中均变变成prrivaate成成员。1.3.66 多重重继承1)多重继继承的定定义方法法例子:classs Apubl

16、iic:int ii;void funnc1();classs Bpubliic:int ii;void funnc1();classs C:pubblicc A,Bvoid Shoow();缺省情况下下基类被被定义为为 prrivaate;因此基基类B为为私有基基类。2)继承的的不确定定性例子:classs C:pubblicc A,B vvoidd Shhow() j = ii*i; func11();由于基类AA和B中同时时拥有数数据成员员i和成员员函数ffuncc1,类类C引用基基类的成成员时,系系统无法法分辨是是调用哪哪一基类类的成员员而发生生错误;3)解决多多重继承承的不确确定性:

17、使用域操作作符指明明要调用用的基类类,即可可解决不不确定性性问题。classs C:pubblicc A,B iint j; vvoidd Shhow() j = AA:ii*B:i; A:fuunc11();1.3.77多层继继承定义:所谓谓多层继继承指的的是从一一个类派派生出另另一个类类,然后后以派生生类作为为基类,派派生出另另一个类类,直到到最后生生成的派派生类满满足需要要为止(见见MSDDN中的的Hieerarrchyy Chhartt)。1.3.88派生类类的构造造函数与与析构函函数在继承关系系下,派派生类的的构造函函数负责责调用基基类的构构造函数数来设置置基类数数据成员员值。例:c

18、lasss baase/基类类 publiic:int ii;base(intt j)/构造造函数i = jj;classs deerivved:pubblicc baase/派生生类publiic:doublle ff;derivved(innt, douublee);derivved:dderiivedd(innt kk, ddoubble l):basse(kk)/派生生类构造造函数f = ll;1.3.99 构造造函数的的调用顺顺序1) 在定定义派生生类对象象时,系系统首先先调用基基类的构构造函数数,然后后调用派派生类的的构造函函数;在在上例中中,deerivved类类首先调调用baa

19、se类类的构造造函数,然然后调用用自身的的构造函函数。2) 析构构函数的的调用顺顺序与构构造函数数的调用用顺序相相反。1.4重载载1.4.11函数重重载1)如果函函数有相相同的名名称和返返回值,而而有不同同的参数数个数或或参数类类型,则则这些函函数就是是重载函函数。2)派生类类继承了了基类的的某一函函数,并并且又自自定义了了一个同同名函数数,有相相同的返返回值,不不同的参参数类型型或参数数个数。这这种情况况不属于于重载。因因为它们们属于不不同的域域。3)例:classs baase void funnc(iint i)void funnc(ddoubble f)void funnc(ddoub

20、bleff, llongg q);1.4.22 操作作符重载载重载操作符符的定义义:返回回值类型型 opperaatorr opp (参参数表);其中中,opp为重载载操作符符,它必必须是VVC+中所定定义的运运算符。然然后像定定义函数数一样定定义重载载操作符符函数。例子:classs peersoonint aage;void opeerattor +();void peersoon:opeerattor+() age+;1.5虚拟拟函数与与多态性性多态性是面面向对象象程序设设计的精精髓之所所在,也也是C+中最最难理解解和掌握握的部分分。在CC+中中,多态态性是建建立在虚虚拟函数数基础上上的

21、,虚虚拟函数数的使用用使类的的成员函函数表现现出多态态性。1.5.11虚拟函函数1)函数的的定义:在定义义类时在在其成员员函数前前加上关关键字vvirttuall;2)如果基基类中成成员函数数定义为为虚函数数,则派派生类中中与其定定义完全全相同的的成员函函数,编编译器自自动将其其视为虚虚函数;3)只有类类的成员员函数才才能定义义为虚函函数。4)虚拟成成员函数数的存取取要看首首次定义义它的类类中,该该函数是是pubblicc还是prrivaate。例:classs Innsecct virtuual boool CCanFFly();bool Inssectt : CaanFlly()retur

22、rn FFALSSE;classs Buutteerflly:ppubllic Inssecttbool CannFlyy();bool Buttterrflyy : CaanFlly()returrn TTRUEE;1.5.22 虚函函数的调调用1) 根据对象的的不同而而去调用用不同类类的虚拟拟函数2) 可以使用基基类对象象调用派派生类对对象,即即将派生生类对象象或指针针赋值给给基类对对象或指指针。3) 反方向的赋赋值(将将基类的的对象或或指针赋赋给派生生类的对对象或指指针)是是危险的的。例:bool rtnn;Insecctinc11,*ppIncc;Butteerflly bbtflly

23、;pInc = &incc1;/pIInc指指针指向向Inssectt对象rtn = pIInc-CaanFlly();/返返回FAALSEEpInc = &btffly;/pIInc指指针指向向Buttterrflyy对象rtn = pIInc-CaanFlly();/返返回TRRUE1.5.33 虚拟拟函数与与重载函函数的区区别1)形式上上,重载载函数要要求有相相同的返返回值类类型和函函数名,并并有不同同的参数数序列;而虚拟拟函数要要求三者者完全相相同。2)重载函函数可以以是成员员函数或或非成员员函数;而虚拟拟函数必必须是成成员函数数。3)调用方方法上,重重载函数数根据所所传递的的参数序序

24、列的差差别作为为调用的的依据;而虚拟拟函数则则根据调调用对象象的不同同而去调调用不同同类的函函数。4)虚拟函函数在运运行时表表现出多多态功能能;而重重载函数数不具有有这一功功能。1.5.44纯虚函函数定义:viirtuual typpe ffunccnamme(pparaametter)=0;C+中有有时设计计基类就就是为了了被继承承,而基基类中的的虚拟函函数不做做任何工工作,这这种情况况下可以以将基类类中的虚虚拟函数数定义为为纯虚函函数。包包含纯需需函数的的类叫抽抽象类。抽抽象类不不能定义义对象,但但可以定定义指向向它的指指针。习题:1.1什么么是类?1.2理解解封装、继继承和多多态。第二讲

25、 编编程工具具VC2.1熟悉悉VC开发发环境2.1.11 VCC向导提提供的帮帮助以前Winndowws编程程需要程程序员编编写大量量的框架架代码,这这对初学学者来说说简直就就是一个个噩梦;并且这这些框架架代码基基本相同同,因此此Miccrossoftt提供了了向导AAppWWizaard帮帮助生成成框架代代码,这这极大的的方便了了我们编编写程序序。2.1.22 VCC向导可可以生成成的工程程类型ATL CCOM ApppWizzarddCustoomApppWizzarddDatabbaseeProojecctISAPII Exxtennsioon WWizaardMakeffileeMFC

26、 AActiiveXX CoontrroWiizarrdMFC AAppWWizaard (DLLL)MFC DDataabasse WWizaardWin322 ApppliicattionnWin322 Coonsoole ApppliccatiionWin322 DLLLWin322 Sttatiic LLibrraryy2.1.33 建立立第一个个应用程程序:使用向导AAppWWizaard生生成典型型的应用用程序基于于多文档档的可执执行程序序。2.1.44 如何何获取帮帮助?Micrrosooft的的MSDDN提供供了编程程所需的的绝大部部分信息息,使用用F1键键可以打打开MSSDN

27、帮帮助。2.2消息息与命令令2.2.11 消息息消息是Wiindoows编编程不同同于其它它编程方方式的地地方,如如DOSS环境下下编程。消消息就是是操作系系统通知知应用程程序某事事已发生生的一种种方式,如如:用户户已输入入、已单单击或移移动鼠标标、打印印机已空空暇等。2.2.22 消息息传递1) 尽管管操作系系统用整整数来引引用消息息,但所所有消息息都通过过它们的的名字来来引用。一一个巨大大的#ddefiine语语句将消消息名同同数值联联系起来来。不同同消息由由操作系系统或应应用程序序的不同同部分处处理。如如,当用用户在窗窗口上移移动鼠标标时,窗窗口得到到一个WWM_MMOUSSEMOOVE

28、消消息,它它几乎全全部传送送给操作作系统去去处理。2)MFCC允许程程序员忽忽略底层层消息,并并使得在在单独类类级别上上声明每每个类处处理哪些些消息更更容易。2.2.33 消息息循环15- -第二讲 编程工具VC1)任何wwinddowss 程序序的核心心是消息息循环,这这通常包包含在WinnMaiin() 例程程中。2)MFCC 通过过消息映映射来保保持消息息处理函函数与消消息处理理信息的的一致。2.2.44 消息息映射消息映射是是进行wwinddowss 编程程的一部部分MFFC 方方法,用用来代替替编写向向用户的的WinnProoc() 发送送消息的的WinnMaiin() 函数数,及编

29、编写检查查消息类类型的WWinPProcc() 函数。用用户只需需编写处处理消息息的函数数,并且且在用户户的类中中增加一一个消息息映射即即可,其其它一切切由MFFC 处处理。2.2.55 消息息映射宏宏在类声明的的结尾部部分,使使用宏DDECLLAREE_MEESSAAGE_MAPP来声明明在类定定义部分分需要消消息映射射。在*.CPPP文件件中使用用宏BEEGINN_MEESSAAGE_MAPP和ENDD_MEESSAAGE_MAPP来声明明消息映映射,在在两个宏宏之间声声明消息息的映射射函数。2.2.66 常用用消息映映射宏ON_COOMMAAND 用于将将特定命命令的处处理委派派给类的的

30、一个成成员函数数。ON_MEESSAAGE 用于将将用户自自定义消消息的处处理委派派给类的的一个成成员函数数。2.2.77 使用用ClaassWWizaard帮帮助用户户捕获消消息1)带标签签的CllasssWizzardd对话框框通过选择VVieww,Cllassswizzardd或按CCtrll+W可可以显示示主Cllassswizzardd对话框框。在对对话框的的顶部有有两个下下拉列表表框,一一个用于于提示正正在处理理的工程程文件(本本例是),另另外一个个用于提提示哪一一个类拥拥有正在在进行编编辑的消消息映射射。在这这两个组组合框下下面是一一个列表表框。左左边的框框列出了了类本身身和用户

31、户局面可可以产生生的所有有命令。右右边的框框列出了了这个类类可以捕捕获的所所有Wiindoows消消息,也也列出了了许多捕捕获常用用消息的的虚函数数。在这些框的的右边是是一些按按钮,它它们的作作用分别别是向工工程文件件增加新新类、向向类中增增加一函函数以捕捕获被高高亮显示示的消息息、删除除正在捕捕获消息息的函数数,以及及为捕获获高亮显显示消息息的函数数打开源源代码口口通常,用用户选中中一个类类,选中中一个消消息,并并单击AAdd Funnctiion来来捕获消消息。下下面就是是Addd Fuuncttionn按钮所所做的事事情:a) 将一个骨架架函数添添加到应应用程序序源文件件的末尾尾。b)

32、在源文件的的消息映映射中增增加一个个入口。c) 在包含文件件中的消消息映射射中增加加一个入入口。d) 更新对话框框中的消消息和成成员函数数列表。2)添加WWinddowss消息处处理函数数对话框框还有另外一一种捕获获消息的的方法。用用户可以以右击CClasssViiew中中的类名名,然后后从出现现的快捷捷菜单中中选择AAdd Winndowws MMesssagee Haandller。这这时将出出现如下下图所示示的对话话框。2.2.88 命令令命令是一种种特殊的的消息类类型。用用户在任任何时候候选择一一个菜单单项,单单击一个个按钮或或告诉系系统做什什么,wwinddowss 都将将产生一一个

33、命令令。 CClasssWiizarrd可帮帮助用户户捕获命命令。运运行界面面与消息息捕获类类似。命令消息都都通过被被选择的的菜单或或被单击击的按钮钮的资源源ID与与相应的的处理函函数进行行关联。只只有从CCWndd派生的的对象可可以接收收消息。每每个资源源ID仅仅关联两两个消息息:COOMMAAND和和UPDDATEE_COOMMAAND_UI。第第一个消消息允许许增加处处理用户户选中菜菜单选项项或单击击按钮的的函数一一一也就就是说,捕捕获命令令。第二二个使用用户可增增加一个个设置菜菜单项、按按钮或者者其他控控件的状状态的函函数,就就像操作作系统即即将显示示它们一一样一一一也就是是说,更更新

34、命令令。单击击Addd Fuuncttionn来增加加一个捕捕获或更更新包含含额外步步骤的命命令。2.3文档档、视结结构2.3.11 简介介MFC的文文档/视图结结构把应应用程序序的数据据从用户户实际浏浏览和操操纵数据据的方法法中分离离开来。简简单的说说,文档档对象负负责存储储、加载载和保存存数据,而而视图对对象允许许用户在在屏幕上上查看数数据,并并用适合合于应用用程序的的方法编编辑数据据。2.3.22 了了解文档档CDocuumennt类一个文档代代表了一一个数据据集合,典典型情况况下一个个文档由由用户通通过Fiile Opeen命令令打开并并通过 Fille SSavee命令保保存。用用户

35、通过过与文档档关联的的CViiew对对象操作作文档。一一个文档档可以有有多个视视图关联联。2.3.33 了了解视图图视图是显示示存储在在文档对对象中的的数据,并并允许用用户修改改这些数数据。视视图对象象保持了了一个文文档对象象的指针针。为了了显示和和修改数数据,视视图对象象可用这这个指针针访问文文档的成成员变量量。一个个视图对对象只能能与一个个文档对对象关联联。调用用OnUUpdaate() 函函数可以以更新一一个视图图。所有有的屏幕幕显示操操作可在在从CVVieww继承的的派生类类的OnnDraaw成员员函数中中完成。CVieww类的派派生类:CCtrllVieew实现常常用控件件的视图图C

36、EdittVieew提供基基本的文文本编辑辑功能CRichhEdiitViiew提供复复杂的文文本编辑辑功能CFormmVieew通过使使用对话话框资源源实现窗窗体式窗窗口CRecoordVVieww提供了了显示数数据库记记录的功功能CDaoRRecoordVVieww一般与与DAOO数据库库类一起起使用,其其余与CCReccorddVieew相同同。CScroollVVieww提供滚滚动功能能CListtVieew在窗口口中显示示CLiistVVieww控件CTreeeVieew在窗口口中显示示CTrreeVVieww控件2.4图形形设备接接口2.4.11 理解解设备环环境1)户能够够显示任

37、任何形式式的数据据,因为为窗口中中显示的的所有东东西,不不论是文文字、表表格、位位图或是是其它任任何类型型的数据据,都是是以图形形方式显显示的。2)MFCC通过将将winndowws的GDII函数和和对象封封装到其其设备环环境(DDC)类类中来帮帮助用户户显示数数据。3)一个设设备环境境(DCC)就是是一个数数据结构构,它对对窗口的的绘制表表面的属属性保持持跟踪。这这些属性性包括当当前选择择的画笔笔、画刷刷和用来来在屏幕幕上绘制制的字体体。一个个DC一次次只能有有一种画画笔一种种画刷和和一种字字体。设设备环境境对象封封装了画画线、写写文本等等APII函数,所所有的画画图操作作都通过过DC对象象

38、进行。4)DC帮帮助Wiindoows实实现了设设备无关关性。DDC能用用来输出出到屏幕幕、打印印机和元元文件。什么是元文文件(mmetaafille) 元文文件就是是由一系系列可变变长度结结构组成成的数组组,图片片以设备备无关的的格式存存储在结结构中。当当元文件件的记录录被转换换成设备备命令并并被合适适的设备备处理时时,元文文件被显显示。5)CDCC类。CDDC就是是设备环环境对象象类。CCDC对对象提供供了操作作DC的成成员函数数。可以以通过CCDC对对象类的的成员函函数来进进行所有有的绘图图操作。6)CPaainttDC类类a. CPPainntDCC 类继继承CDDC 类类;b. CP

39、PainntDCC 类的的构造函函数自动动调用OOnPaaintt 函数数,接着着就可以以在DCC 中绘绘图;类类的析构构函数自自动调用用EnddPaiint 函数。c. BeeginnPaiint 函数准准备绘图图的窗口口;EnndPaaintt 函函数表明明结束窗窗口的绘绘图。d.在视图图类的OOnDrraw 函数中中,CPPainntDCC已经由由系统准准备好,可可以直接接在OnnDraaw 中中绘图。并并且CPPainntDCC由系统统自动释释放。7)CCllienntDCC类CClieentDDC对象象封装了了所有对对Winndowws客户户区DCC的操作作。CCClieentDDC

40、通过过调用GGetDDC函数数得到,通通过ReeleaaseDDC函数数释放。8)CWiindoowDCC类CWinddowDDC对象象封装了了对整个个winndoww窗口,包包括框架架的操作作。9)CMeetaFFileeDC类类CMetaaFilleDCC对象封封装了对对一个WWinddowss 元文文件的绘绘图操作作。但是是必须自自己调用用OnPPreppareeDC函函数,来来准备设设备环境境。2.4.22 图形形对象(Graaphiic OObjeect)Windoows 提供了了多种在在DC 中使用用的图形形对象类类。这些些类与WWinddowss GDDI的句句柄类型型相对应应。

41、图形对象类类 Winndowws 句句柄类型型CPen HPEENCBrusshHBBRUSSHCFontt HFOONTCBitmmapHHBITTMAPPCPaleettee HPAALETTTECRgn HRGGN使用图形对对象的一一般步骤骤:1)定义图图形对象象,使用用图形对对象类的的Creeatee函数如如CreeateePenn创建对对应的对对象。2)将创建建的图形形对象选选进当前前设备环环境(DDC)中中,并保保存旧的的图形对对象。3)完成使使用当前前图形对对象后,将将原图形形对象选选回DCC中。4)保证分分配的图图形对象象在结束束使用后后被删除除。注意:如果果要反复复的使用用一

42、个图图形对象象,可以以只申请请一次,然然后在需需要的时时候将其其选入DDC中。但但是必须须确保在在不再需需要使用用图形对对象的时时候,删删除它。2.5对话话框和控控件2.5.11 对话话框Windoows应应用程序序可能有有多个对对话框,对对于每一一个对话话框,必必须开发发两个实实体:对对话框资资源和对对话框类类。对话话框资源源用于定定义在屏屏幕上显显示的对对话框和和它的控控件的大大小和位位置等信信息。对对话框类类是对话话框和它它的控件件的对应应代码。用用户可以以用资源源编辑器器建立对对话框资资源,向向其中增增加控件件和对它它们进行行调整。对对话框及及在对话话框上的的控件都都必须有有一个用用于

43、标识识的IDD。CllasssWizzardd帮助用用户建立立一个对对话框类类,通常常由MFFC类CCDiaalogg派生而而来,并并将资源源和类相相连。通常对话框框上的每每一个控控件对应应类中的的一个成成员变量量。要显显示对话话框,可可调用类类的成员员函数。可可以在显显示对话话框前为为控件设设置缺省省值,或或使用控控件对应应的成员员变量设设定控件件值。使使用CllasssWizzardd中的MMembber Varriabbless可以为为对话框框上的控控件本身身或控件件值建立立对应的的类成员员变量。单击上图中中的Addd VVariiablle按钮钮,将弹弹出如下下图所示示的Addd MM

44、embber Varriabble对对话框。在这个对对话框的的Cattegoory和和Varriabble typpe下拉拉式组合合框中可可以选择择控件对对应成员员变量的的类型:Vallue或或Conntrool类型型,以及及它们确确切对应应的类型型。然后后,在程程序中就就可以使使用定义义的变量量来操纵纵控件了了。2.5.22 控件件1)基本控控件Windoows常常用控件件MFC对应应的类按钮控件CButtton编辑框控件件Ceditt复选框控件件CChecck列表框控件件CListtBoxx进度条控件件(Prrogrresss baar)CProggresssCttrl滑块控件CSlidd

45、erCCtrll上下控件CSpinnButttonnCtrrl图象列表(imaage lisst)CImaggeLiist列表视图控控件(llistt viiew)CListtCtrrl树形控件(treee vvieww)CTreeeCtrrlRich Ediit控件件CrichhEdiitCttrl2)添加自自定义控控件在应用程程序中可可以添加加一些自自己生成成的或由由他人提提供的控控件。方方法如下下:首先,选选择菜单单proojecct,AAdd To Proojecct,CCompponeentss Annd CConttrolls,弹弹出对话话框“Commponnentts AAnd Conntrool GGallley”对话框框,选择择“Reggisttereed AActiiveXX Coontrrolss”。然后,选选择准备备插入的的控件(如如“GissAtttEdiit CConttro”),按按Inssertt按钮,会会在程序序中生成成控件对对应的类类。接着,就就可以像像

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 管理手册

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com