程序清单2 MapAppView.cpp文件
5. 编译运行软件,将屏幕显示分辨率设置为1600′1024,则在右半屏出现地图窗口。现在剩下的工作只是加入接收目标数据并转换为经纬度后进行实时显示,这里只给出同地图窗口有关的部分,假设正在不断接收目标数据,写入全局变量中,并向CmapAppView类发送消息,调用CmapAppView类的 ShowMapLine()函数。在MapApp.cpp文件中添加全局变量定义:
在MapApp.h文件中添加全局变量说明:
在CmapAppView::OnInitialUpdate()函数的结束部分添加如下代码:
/////////////////定义mapinfo中所用的变量
在CmapAppView:: ShowMapLine()函数代码如下:
程序清单3 MapAppView.cpp文件
6. 编译运行软件,显示界面如下:
要保存plane表,可在CmapAppView类的析构函数中添加下面的代码:
程序清单4 MapAppView.cpp文件
左屏显示内容的构造,可根据各软件系统的要求,显示数据,图表等,由VC++编程实现。
三、 其它说明
上面程序清单2中
sprintf(str,"Add Map Window %lu Layer plane Animate",m_lWindowid);
语句中的Animate属性一定要有,这表示将plane图层设置为动态(Animate)图层,每个地图窗口只能有一个动态图层,当这个图层上的对象变化时,地图窗口只刷新此图层,以便可以实现快速刷新。
在应用OLE技术嵌入地图窗口的应用中,还可根据需要加入多种工具,用于地图信息的修改和查询,如标尺窗口,信息窗口,图层控制,图层选择编辑等,但在实时接收数据并显示的状态下,有些功能的使用将会导致访问冲突,以致程序出错,如图层控制、图层编辑等,原因是实时数据正在对plane表进行编辑,此时再改变其它图层,就与mapInfo一次只能编辑一个图层的原则产生了冲突。
责任编辑:cyth