用vc++實現向量地圖背景下的即時顯示
來源:互聯網
上載者:User
摘要 本文介紹了在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/"兩個源檔案。