网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
用VC++实现矢量地图背景下的实时显示
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式

  摘要 本文介绍了在VC++实现的实时显示系统中,用OLE方式嵌入MapInfo矢量地图的编程方法,简要叙述了其实现过程。

  一、 前言

  电子地图应用作为一门新兴学科,已不仅限于地图制作中。本文利用VC++和OLE(Object Linking and Embedding, 对象连接和嵌入)编程技术,实现了实时信息在矢量地图背景上的显示。

  程序应用于显示处理终端,接收并处理网络信息的部分在不同的系统中有不同的要求,这里不再赘述。
MapInfo矢量地图用图层方式进行存储和管理,每个图层对应地图上的一类要素(如居民地,水系,铁路,公路等),对于每个包含图形信息的图层,需要有4个文件(.dat, .tab, .map, .id)支持。

  MapInfo地图允许嵌入一个地图窗口到任何能接受OLE对象的应用程序中。从服务器(如MapInfo)插入一个OLE对象到容器应用程序(如Microsoft Word),并在该应用程序中对这个对象进行处理。被嵌入的对象是来自服务器应用程序的对象的一个副本。对象一旦位于容器中,它将不再被链接到源对象。

  在VC++应用程序中用OLE方式嵌入MapInfo进程,需定义了一个MapInfo对象(DMapInfo类),DMapInfo类在MapInfo类型库(Mapinfow.tlb)中定义。MapInfo软件提供了自己的编程语言MapBasic, VC++对地图进程的操作主要通过发送MapBasic命令来实现。

  二、 创建程序框架

  程序框架是用MFC实现的,MFC 应用程序向导(AppWizard)生成了大部分的代码,然后加入MapInfo进程。步骤如下:

  1. 创建一个新项目,项目类型选择MFC AppWizard(exe),项目名称设为MapApp,其它按照提示进行设置即可。应用程序向导自动生成了三个类:

   CmapAppApp 应用程序

   CmapAppDoc 文档类

   CmapAppView 视图类

   CmainFrame 主框架类

  2. 添加MapInfo类型库

  运行类向导,单击增加类按钮(Add Class …),选择"From a type library",找到"Mapinfow.tlb"文件并打开,在"Confirm Classes"中选择"DMapInfo"类,单击OK确认输入并关闭对话框。现在MapApp应用程序中已添加了DMapInfo类,并增加了"mapinfow.h"和"mapinfow.cpp"两个源文件。


3. 用OLE方式嵌入MapInfo进程

  在"mapApp.cpp"中CMapAppApp theApp语句下面加入下面的语句:

DMapInfo mapinfo; file://mapinfo对象

  在CMapAppApp::InitInstance() 函数中增加OLE的初始化,代码如下:

  程序清单1 MapApp.cpp文件

BOOL CMapAppApp::InitInstance()
{
if (!AfxOleInit()) file://OLE初始化
{ file://失败
AfxMessageBox("OLE失败!");
return FALSE;
}
if (!mapinfo.CreateDispatch("MapInfo.Application")) file://地图窗口处理进程
{ file://失败
AfxMessageBox("Failed to create MapInfo dispatch class!");
file://::MessageBox(0, mapinfo.GetFullName(), "Amazing!", MB_OK);
return FALSE;
}
/*本处省略MFC自动生成的代码*/
}

  将"mapbasic.h"文件拷贝到本项目的目录中,在"stdafx.h"中增加以下代码,把mapinfo说明为全局变量:

#include "mapbasic.h"
#include "mapinfow.h"
extern DMapInfo mapinfo; file://全局变量,地图窗口对象
4. 显示地图窗口

  为CmapAppView类增加地图窗口的标识和句柄变量,在MapAppView.h文件中添加如下代码:

unsigned long m_lWindowid; file://地图窗口标识
HWND m_hWindowHwnd; file://地图窗口句柄

  打开类向导窗口,在Class Name下拉列表框中选择类CmapAppView,Object Ids列表框中选择CmapAppView,Messages列表框中选择OnInitialUpdate,单击Add Functio
  • 下一篇资讯: 快速实现MFC类浏览器
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号