高级搜索 网站地图 RSS订阅
热门搜索:  毕业论文范文  本科毕业论文范文  大学毕业论文  毕业论文  法律毕业论文  实习总结

PowerBuilder和MapInfo的集成开发技术

  【收藏】
来源:网络 编辑整理:不详 发表时间:2007-03-26 16:37:28 【字体大小:

'保存地图对象所在的表的名称

g_seltabname = SelectionInfo(SEL_INFO_TABLENAME)

——论文大聚合www.17lw.com,一起论文网

'向PowerBuilder客户程序发送消息

——内容来自www.17lw.com,一起论文网

iRc = PostMessage(g_pbhwnd_bg,SELECTION_MADE,0,0) ——防采集设置www.17lw.com,一起论文网

End If

——内容来自www.17lw.com,一起论文网

End Sub ——论文大聚合www.17lw.com,一起论文网

下面的程序段中给出了实现回调时PowerBuilder客户程序的处理过程。该处理过程使用了MapBasic编写的mbserver.mbx程序。在MapBasic程序中保存事件信息的变量为g_SelTabName,而g_PbHWnd是MapBasic程序中用来接收PowerBuilder客户程序窗口句柄的全局变量。

——内容来自www.17lw.com,一起论文网

//在MapInfo服务器中运行MapBasic应用程序

——免费论文来自www.17lw.com,一起论文网

MapInfo.Do("Run Application ~"" + gs_AppDir + "DataFusion.mbx~"")

——内容来自www.17lw.com,一起论文网

//创建对MapBasic应用程序进行控制的OLE自动化对象 ——内容来自www.17lw.com,一起论文网

MBAppOleObject = Create OleObject

——论文大聚合www.17lw.com,一起论文网

MBAppOleObject = MapInfo.MBApplications.Item(1) ——内容来自www.17lw.com,一起论文网

//传递PowerBuilder客户程序中的窗口句柄给MapBasic应用程序

——论文大聚合www.17lw.com,一起论文网

//以便MapBasic应用程序将返回给PowerBuilder客户程序 ——内容来自www.17lw.com,一起论文网

MBAppOleObject.MBGlobals.Item("g_pbhwnd_bg").Value = String(Handle(this))

——论文大聚合www.17lw.com,一起论文网

由下面代码所示的PowerBuilder客户程序就可以在窗口w_map的用户自定义事件ue_SelectionMade中处理地图窗口事件: ——内容来自www.17lw.com,一起论文网

//在PowerBuilder客户程序的用户自定义事件中使用MBAppOleObject对象获取回调信息 ——论文大聚合www.17lw.com,一起论文网

ls_MI_CommandInfo = MBAppOleObject.MBGlobals.Item("g_CommandInfoString").Value ——论文大聚合www.17lw.com,一起论文网

5.充分利用MapBasic应用程序

——免费论文来自www.17lw.com,一起论文网

MapBasic是MapInfo提供的用户系统开发工具,它具有对地图对象的管理、对含有地图对象的MapInfo表的管理等方面的强大功能。

——免费论文来自www.17lw.com,一起论文网

在将MapInfo地图集成到PowerBuilder的开发应用中,MapBasic不仅仅能用来实现回调,还可实现其它诸多功能。例如,在开发过程中经常会遇到需要保存地图对象类型的中间结果的问题,而在PowerBuilder中没有与之对应的数据类型,又难以通过MapInfo OLE自动化对象的方法和属性实现等诸如此类的问题,若利用MapBasic应用程序以及使用它的OLE自动化对象MBApplications的方法和属性来解决,可以达到事半功倍之效果。 ——防采集设置www.17lw.com,一起论文网

与MapInfo OLE自动化对象相似,MapBasic的OLE自动化对象MBApplications也有自己的Do方法和Eval方法。每当PowerBuilder客户程序调用它们时,MapInfo就会自动调用MapBasic的保留过程RemoteMsgHandler()或RemoteQueryHandler()过程,并可以在过程中通过CommandInfo(CMD_INFO_MSG)得到调用Do方法或Eval方法的参数。

——内容来自www.17lw.com,一起论文网

以下代码运用MBApplications的Do方法,实现改变当前选中地图对象的颜色: ——免费论文来自www.17lw.com,一起论文网

//要求将当前选中地图对象的颜色改为兰色 ——免费论文来自www.17lw.com,一起论文网

MBAppOleObject.Do("Blue") ——免费论文来自www.17lw.com,一起论文网

MapInfo将自动调用RemoteMsgHandler()过程: ——内容来自www.17lw.com,一起论文网

Sub RemoteMsgHandler()

——论文大聚合www.17lw.com,一起论文网

Dim MyObject As Object

——免费论文来自www.17lw.com,一起论文网

'获取并分析Do方法的参数

——论文大聚合www.17lw.com,一起论文网

CmdInfoStr = CommandInfo(CMD_INFO_MSG) ——免费论文来自www.17lw.com,一起论文网

'改变地图对象的颜色

——内容来自www.17lw.com,一起论文网

If CmdStr= "Blue" then

——论文大聚合www.17lw.com,一起论文网

MyObject = Selection.obj ——内容来自www.17lw.com,一起论文网

Alter Object MyObject Info 2, MakeCustomSymbol ("Towe1-32.bmp", RGB(0,0,255), 18, 2)

——免费论文来自www.17lw.com,一起论文网

Update Selection set obj = MyObject Where RowID = 1 ——免费论文来自www.17lw.com,一起论文网

End If

——论文大聚合www.17lw.com,一起论文网

End Sub ——免费论文来自www.17lw.com,一起论文网

MBApplications的Eval方法的调用与Do方法的类似,只不过MapInfo将自动调用RemoteQueryHandler()过程,并要求返回一个结果。

——内容来自www.17lw.com,一起论文网

6 结束语 ——内容来自www.17lw.com,一起论文网

目前,关于MapInfo地图的集成应用大都是利用VB、VC++开发的,利用PowerBuilder开发的实际应用却很少,以至很多人认为难以利用PowerBuilder实现对MapInfo的集成开发,就算实现了也难以很好地完成对地图窗口的控制。本文介绍了如何将MapInfo地图集成到PowerBuilder的开发应用中的基本方法,以及其中的一些关键技术。运用此方法开发应用程序,可以充分发挥PowerBuilder强大的数据访问与操纵能力和MapInfo的地图信息管理功能,迅速地、灵活地开发基于地理信息系统的客户/服务器的信息管理系统。 ——内容来自www.17lw.com,一起论文网

参考文献:

——免费论文来自www.17lw.com,一起论文网

1.William B.Heys著,王艺,徐利平,范维等译PowerBuilder 6 开发指南,1998

——内容来自www.17lw.com,一起论文网

2.张剑平,任福继,叶荣华,骆红波著,地理信息系统与MapInfo应用,科学出版社,1999

——免费论文来自www.17lw.com,一起论文网

3.宜晨等著,MapInfo 4.0 实用培训教程,电子工业出版社,1998

——免费论文来自www.17lw.com,一起论文网


 

——免费论文来自www.17lw.com,一起论文网


共2页: 上一页 [1] 2 下一页