,只是在含有更新操作时需增加一个刷新ODBC 表的操作(MapInfo V410 参考手册、用户指南,MapInfo 公司) .
31212 系统框架
在VB 中建立一个MDI 窗口作为系统主窗口,标题为“北京市香山公园古树名木地理信息系统”,在窗口上部建立一个菜单(menu) 包括“文件”、“地图”、“地理位置查询”、“养护指南”、“影像”、“数据专题地图”等主菜单. 紧接着菜单以下区域设计一个快捷工具栏,包括放大、缩小、信息等快捷功能. 快捷工具条下放置一个PictureBox 控件,用来显示地图.另外,系统还要设置一些辅助窗口,来容纳MapIn fo 重生成窗口或非模态窗口供用户交互时使用[3] .
框架如图1 所示:
31213 启动MapInfo
主窗口载入前应在后台启动MapInfo
Public MapInfo As Object
Set MapInfo = CreateObject (″MapInfo. Application″)
MapInfo. Visible = False
⋯⋯
31214 向MapInfo 发送命令
启动MapInfo 后,构造表示MapBasic 语句字符串让MapInfo 执行MapBasic 指令. 如果想让MapInfo执行Open Table 语句,在VB 中构造下列字符串:
msg =″Open Table″″古树总. tab″″Interactive″MapInfo. Do msg本系统中绝大部分语句都是通过这种方式将用户的指令翻译成MapBasic 指令传送给MapInfo ,再把MapInfo 执行的结果带回应用程序界面.
31215 从MapInfo 返回值
本系统采用自动OLE 连接,使用Eval OLE 方法向MapInfo 发送信息.
Dim Result As String
Result MapInfo. Eval ″windowID(0)″
使用Eval 方法时,MapInfo 解释这个字符串为一个表达式,并以字符串形式返回表达式的值. 如果表达式是一个逻辑表达式,则返回单字符“T”或“F”.
31216 重生成MapInfo 窗口
本系统所有的窗口界面全是自己构建好,然后让MapInfo 窗口在其中显示.启动MapInfo ,执行Set Application Window 语句后,MapInfo 的对话框和错误信息为客户程序所有.
Msg =″Set Application Window″& FormName. hWnd
MapInfo. Do msg
系统通过向MapInfo 发送Set Next Document 语句,集成MapInfo 窗口到自定义的窗口中. 例如,
msg =″Set Next Document parent″&MapFrame. hWnd &″Style 1″
MapInfo. Do msg
Msg =″Map From 古树总″
MapInfo. Do msg
⋯⋯
Set Next Document 语句重新生成一个文档窗口,在这条语句中, 还要指定VB 中控件的句柄(HWND) . 重生成每一个窗口,需要两条语句,一个是Set Next