专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

PowerBuilder和MapInfo的集成开发技术

  PowerBuilder和MapInfo的集成开发技术PowerBuilder和MapInfo的集成开发技术PowerBuilder和MapInfo的集成开发技术PowerBuilder和MapInfo的集成开发技术中国人民解放军电子工程学院梁亚声
  摘要:本文介绍了客户服务器开发工具PowerBuilder和桌面地图信息系统MapInfo集成开发的基本方法。重点讨论了集成开发中的一些关键技术的实现方法。
  关键词:PowerBuilder,MapInfo,MapBasic,系统集成,OLE自动化,回调
  0引言
  PowerBuilder是一个面向对象的用于构造基于客户服务器(ClientServer)数据库应用系统的开发工具,它通过ODBC可同时支持Sysbase、Oracle、Informix、SQLServer等多种关系数据库,具有强大的数据库应用程序开发功能,尤其是它提供的如数据窗口(DataWindow)等工具,使其能够更加方便有效地访问与操纵数据库。
  MapInfo是由美国MapInfo公司推出的地理信息系统开发平台,其核心包括MapInfoProfessional和MapBasic两个部件。通过MapInfo平台,能把大量信息直观地与地理图形有机联系起来,使枯燥的表格数据可视化,从而极大地方便了数据分析和辅助决策。
  利用PowerBuilder强大的数据访问与操纵能力和MapInfo的地图信息管理功能,结合IntegratedMapping技术、OLE自动化技术等,将MapInfo地图集成到PowerBuilder的应用中,可以迅速地开发出具有强大地图处理能力的应用程序,使数据库中繁杂抽象的数据快速、准确、灵活地显示于电子地图之上,将数据可视化,实现空间数据和属性数据的有机结合。
  1开发框架
  使用PowerBuilder和MapInfo集成开发技术所开发的应用程序,称为集成的地图应用程序(IntegratedMappingApplication)。在集成的地图应用程序中,以客户服务器的开发模式,使用PowerBuilder开发的应用程序称为客户程序。客户程序运行在前台,通过OLE调用在后台运行的作为OLE自动化服务器的Mapinfo。
  在集成的地图应用程序中,根据MapInfo提供的IntegratedMapping接口,在PowerBuilder客户程序中使用OutboundOLEAutomation(输出OLE自动化)技术,将MapInfo的地图窗口集成到客户程序中,从而使客户程序具备地图处理能力。客户程序使用MapInfoOLE自动化对象、MapBasicOLE自动化对象的有关属性和方法,通过MapInfoOLE自动化服务器对集成的地图窗口进行控制。图1给出了客户程序和服务器程序间的关系。
  图1PowerBuilder客户程序和MapInfo服务器的关系
  2建立PowerBuilder客户程序和MapInfoOLE服务器的连接
  建立PowerBuilder客户程序和MapInfoOLE服务器的连接在原理上是:在PowerBuilder开发的客户程序中,通过使用OutboundOLEAutomation技术实现客户程序和MapInfo服务器的连接,借助OLE调用MapInfo服务器。具体实现上是:在包含地图窗口的框架窗口的Open事件中添加代码,创建一个新的OLEObject,而将MapInfo作为这个新的OLEObject的OLE服务器。要调用MapInfo服务,则需调用ConnectToNewObject()函数并传递OLEProgrammableObject的程序标识,即MapInfo。Application:
  OLEObject对象的实例
  OLEObjectMapInfo
  接收错误代码
  IntegerErrCode
  创建一个与MapInfo进行通信的OLE自动化对象
  MapInfoCreateOLEObject
  连接OLE自动化对象到MapInfo服务器
  ErrCodeMapInfo。ConnectToNewObject(MapInfo。Application)
  IfErrCodelt;gt;0Then
  MessageBox(FatalError,Errorconnectingtothemapserver。Exiting。。。)
  Ruturn
  EndIf
  在退出应用程序时,要调用DisConnectToObject()函数断开OLE自动化对象和MapInfoOLE自动化服务器之间的连接,并撤消OLE自动化对象,以释放其占用的系统资源。为此,可在上述框架窗口的Close事件中添加代码实现:
  断开与OLE自动化对象与MapInfo服务器的连接
  MapInfo。DisConnectToObject()
  释放OLE自动化对象
  DestroyMapInfo
  3将地图窗口集成到PowerBuilder应用程序中
  要将MapInfo的地图窗口集成到PowerBuilder开发的客户程序中,必须在客户程序中为MapInfo中的应用窗口重新指定父窗口,并指定一个Picture控件作为集成的地图窗口的父窗口。可以使用OLE自动化对象的Do方法实现上述功能:
  重新指定MapInfo中的应用窗口的父窗口为应用程序窗口
  其中wmap为一个窗口
  MapInfo。Application。Do(SetApplicationWindowString(Handle(wmap)))
  指定一个Picture控件棗pmap为地图窗口的父窗口,将地图窗口集成到客户程序中
  MapInfo。Do(SetNextDocumentParentstring(Handle(pmap))Style1)
  图2回调技术的实现
  4实现回调
  在PowerBuilder的客户程序中,是通过OLE自动化对象对集成的地图窗口进行控制,如图2所示。当客户程序在地图窗口进行有关的操作后(例如使用某个自定义工具在地图窗口上单击某个地图对象时),对应的事件只传递给MapInfo服务器,而不直接传递给客户程序,为了在客户程序中对事件进行处理,必须采用回调技术。由于在PowerBuilder中不能定义公共的回调类,因此必须编写一个在MapInfo服务器中运行的MapBasic应用程序,用来将回调信息反馈给PowerBuilder客户程序。其实现过程为:
  然后,编写一个在MapInfo服务器中运行的MapBasic应用程序,在此应用程序中添加对地图窗口事件进行处理的子程序。当对客户程序中的集成地图窗口进行操作时,MapBasic程序中对应的事件处理程序被触发。在事件处理程序中,可以将要传递给客户程序的信息保存到MapBasic中定义的一个全局变量中,然后使用Win32API函数PostMessage(),以PowerBuilder应用窗口的句柄和该窗口的用户自定义事件的ID为参数,向PowerBuilder客户程序发送消息,这样PowerBuilder客户程序就可以在该窗口的用户自定义事件中处理地图窗口事件了,并且还可以使用MBApplications对象的方法,获取MapBasic全局变量中保存的事件信息。如下代码展示了MapBasic应用程序在接收到地图对象选择事件时的处理的过程:
  预定义PowerBuilder应用窗口的用户自定义事件的唯一数值标识符
  响应地图对象选择事件
  SubSelChangedHandler()
  如果选中一个地图对象
  IfCommandInfo(CMDINFOSELTYPE)1Then
  保存地图对象所在的表的名称
  gseltabnameSelectionInfo(SELINFOTABLENAME)
  向PowerBuilder客户程序发送消息
  iRcPostMessage(gpbhwndbg,SELECTIONMADE,0,0)
  EndIf
  EndSub
  下面的程序段中给出了实现回调时PowerBuilder客户程序的处理过程。该处理过程使用了MapBasic编写的mbserver。mbx程序。在MapBasic程序中保存事件信息的变量为gSelTabName,而gPbHWnd是MapBasic程序中用来接收PowerBuilder客户程序窗口句柄的全局变量。
  在MapInfo服务器中运行MapBasic应用程序
  MapInfo。Do(RunApplicationgsAppDirDataFusion。mbx)
  创建对MapBasic应用程序进行控制的OLE自动化对象
  MBAppOleObjectCreateOleObject
  MBAppOleObjectMapInfo。MBApplications。Item
  (1)
  传递PowerBuilder客户程序中的窗口句柄给MapBasic应用程序
  以便MapBasic应用程序将返回给PowerBuilder客户程序
  MBAppOleObject。MBGlobals。Item(gpbhwndbg)。ValueString(Handle(this))
  由下面代码所示的PowerBuilder客户程序就可以在窗口wmap的用户自定义事件ueSelectionMade中处理地图窗口事件:
  在PowerBuilder客户程序的用户自定义事件中使用MBAppOleObject对象获取回调信息
  lsMICommandInfoMBAppOleObject。MBGlobals。Item(gCommandInfoString)。Value
  5充分利用MapBasic应用程序
  MapBasic是MapInfo提供的用户系统开发工具,它具有对地图对象的管理、对含有地图对象的MapInfo表的管理等方面的强大功能。
  在将MapInfo地图集成到PowerBuilder的开发应用中,MapBasic不仅仅能用来实现回调,还可实现其它诸多功能。例如,在开发过程中经常会遇到需要保存地图对象类型的中间结果的问题,而在PowerBuilder中没有与之对应的数据类型,又难以通过MapInfoOLE自动化对象的方法和属性实现等诸如此类的问题,若利用MapBasic应用程序以及使用它的OLE自动化对象MBApplications的方法和属性来解决,可以达到事半功倍之效果。
  与MapInfoOLE自动化对象相似,MapBasic的OLE自动化对象MBApplications也有自己的Do方法和Eval方法。每当PowerBuilder客户程序调用它们时,MapInfo就会自动调用MapBasic的保留过程RemoteMsgHandler()或RemoteQueryHandler()过程,并可以在过程中通过CommandInfo(CMDINFOMSG)得到调用Do方法或Eval方法的参数。
  以下代码运用MBApplications的Do方法,实现改变当前选中地图对象的颜色:
  要求将当前选中地图对象的颜色改为兰色
  MBAppOleObject。Do(Blue)
  MapInfo将自动调用RemoteMsgHandler()过程:
  SubRemoteMsgHandler()
  DimMyObjectAsObject
  获取并分析Do方法的参数
  CmdInfoStrCommandInfo(CMDINFOMSG)
  改变地图对象的颜色
  IfCmdStrBluethen
  MyObjectSelection。obj
  UpdateSelectionsetobjMyObjectWhereRowID1
  EndIf
  EndSub
  MBApplications的Eval方法的调用与Do方法的类似,只不过MapInfo将自动调用RemoteQueryHandler()过程,并要求返回一个结果。
  6结束语
  目前,关于MapInfo地图的集成应用大都是利用VB、VC开发的,利用PowerBuilder开发的实际应用却很少,以至很多人认为难以利用PowerBuilder实现对MapInfo的集成开发,就算实现了也难以很好地完成对地图窗口的控制。本文介绍了如何将MapInfo地图集成到PowerBuilder的开发应用中的基本方法,以及其中的一些关键技术。运用此方法开发应用程序,可以充分发挥PowerBuilder强大的数据访问与操纵能力和MapInfo的地图信息管理功能,迅速地、灵活地开发基于地理信息系统的客户服务器的信息管理系统。
  参考文献:
  1。WilliamB。Heys著,王艺,徐利平,范维等译PowerBuilder6开发指南,1998
  2。张剑平,任福继,叶荣华,骆红波著,地理信息系统与MapInfo应用,科学出版社,1999
  3。宜晨等著,MapInfo4。0实用培训教程,电子工业出版社,1998

职业教育教学信息化建设研究论文一建立网络资源,表现中职学习的知识集中性中职教学与其他教学有较大区别,他们在知识层面和应用力度方面都不同。因为中职教育是对工作技能的专门教学,其针对性强,对应用和实践能力要求高,是注重人文关怀与促进职工的发展论文在社会主义市场经济条件下,企业要实现又好又快地发展,以大力倡导人文精神和创建人文环境为导向,以提高职工素质满足职工需求为主线,以保障职工合法权益体现职工的价值为核心,落实人文关怀,初中地理教学中乡土地理的应用论文引言随着我国教育事业的不断进步和发展,在初中物理的教育教学上也涌现了多种教学方法和教学手段。其中乡土地理在初中地理教学中的应用取得了显著的教学效果,受到了广大教学学者的关注。在传统理性思考教育科技论文一从看教育技术的局限性(大规模网络课程)的出现,使得多人相信,未来所有的大学教育都面临彻底的变革,现代科技真正解放了教师与学生,一个全新的时代已经来临。然而,若是冷静地思考这一新的新中式园林景观设计手法研究论文每个建筑都需要有园林设计的因素在里面,其中新中式园林景观设计是最能体现我国传统建筑景观设计模式和思想的园林景观设计,而且中式景观设计也是在目前的建筑设计中应用最为广泛的一种建筑绿化论文人高雅的品行自古以来,登徒子就是好色代名词,是好色鬼色魔的祖师爷。登徒子的好色之名,与西施的美貌陶猗的豪富潘安的英俊曹植的令才等一样,名闻遐迩,如雷贯耳,青史留名,只可惜他是个反面典型,是好色文人当官议论文导语当官,要为民。官与民的关系应该是和谐的,不是上级与下级,而应该是平等的,以下是小编为大家分享的文人当官议论文,欢迎借鉴!大凡文人爱做官,这是不错的。即使是孔夫子也难脱例外。只是论文今论文人相轻今年暑期电影市场很是火热,郭敬明和韩寒的小时代3刺金时代后会无期抢占全国影屏,甚至有和好莱坞大片一争高下的势头。现代电影要想卖座五花八门的宣传那是绝对不会少。其中两人多年恩怨更是在做人要诚信议论文三杯吐然诺,五岳倒为轻。这是李白侠客行的诗句,形容承诺的分量比大山还要重,极言诚信的重要。中国是一个有五千年悠久历史的文明古国,诚信一向是中国人引以为豪的美德。人无信而不立。诚实守高职大学生安全文化意识教育的措施论文第1篇关于加强高职大学生安全文化意识教育的相关研究随着我国高职教育的不断发展,高职大学生数量不断增加,大学生与社会之间的联系也日益密切。在这种背景下,大学生的安全文化意识直接关系到共享单车申论政论文共享单车是今年兴起的新兴事物,下面就是小编为您收集整理的共享单车申论政论文的相关文章,希望可以帮到您,如果你觉得不错的话可以分享给更多小伙伴哦!共享单车申论政论文一共享单车是城市慢
五莲县精致农业发展的情况调查论文摘要本文调查分析了山东省五莲县围绕农业供给侧结构性改革,大力发展绿色生态有机果茶精致农业的现状推进途径发展重点,提出了发展精致农业的的政策措施,对在当前经济新形势新常态下,如何转变幼儿园教学论文在幼儿园开展的各种教学活动中,传统的教育思想往往只注重于教师的教,而较少考虑到幼儿的学。下面是小编为大家整理的幼儿园教学论文,欢迎阅读。所谓教学,是指教师引起维持或促进学生学习的所小学语文素质化教学论文参考随着新课改的不断深入,语文教学素质化研究也被提上了重要议事日程,广大小学语文教师针对这一方面进行了深入的研究。笔者多年从事小学语文教学工作,在教学中注重结合日常教学各个环节进行素质我国环境公益诉讼适格原告浅析论文一我国环境公益诉讼原告资格限制环境公益诉讼所追求的法治价值在于,打击破坏环境资源的行为,保障公众的环境权利,进而实现环境法治。环境公益诉讼,是指法律规定的机关和有关组织,对有关民事关于直流控制保护系统分析论文从西换流站直流控制保护系统组成从西换流站直流控制保护系统总体上分为以下几个子系统()直流控制系统直流控制系统是换流站控制系统的核心,主要功能是通过对整流侧和逆变侧触发角的调节,实现浅谈高中化学中法制教育的渗透方法论文摘要随着国内法制体系的健全,如今越来越多的人们意识到了法律意识的重要性。高中化学法制教育既是一场普法教学,同时也是让学生了解如何使用法律保护自己的重要手段。现本文结合高中化学中与法积极迎接新世纪的埃及和印度教育论文论文关键词新世纪埃及印度教育论文摘要埃及和印度两个发展中大国为了迎接新世纪的挑战,高度重视教育的地位和作用,正在加大教育投入,实施各项改革。当前,尽管他们与我国教育,在某些方面还存姿态是演讲战无不胜的基础论文姿态的表现是你内心的外露。有的人,一举手,一投足都会引起人们的反感。那么,即便从他嘴里说出再确凿的事实,听的人也会把他说的话打上折扣。有许多事情,就是由于说话的人不拘小节从而影响了小学二年级数学教学有效性探析论文随着素质教育的不断推进,教育界人士对于小学教育的认知正在不断加强,提升教学的有效性和培养学生的综合能力已经成为了广大教师必须要面对的课题,小学是学生学习数学的重要阶段,学好数学对于中小学音乐欣赏课教学反思论文摘要音乐欣赏课是音乐教育中美的教育,对于帮助学生建立良好的审美观有着积极的作用。本文就中小学音乐欣赏课教学中的若干问题提出几点反思,和学者们共同探讨此类问题。关键词中小学音乐音乐欣本科音乐学毕业论文音乐学科具有不同于其他学科的特征,具有特殊的学习方式。小编为大家整理的本科音乐学毕业论文,希望大家喜欢。本科音乐学毕业论文1摘要随着我国高校扩招进度的不断扩招,高校毕业生就业压力逐
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网