用VC++实现矢量地图背景下的实时显示
2008-11-14 19:35:22 来源:WEB开发网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 Function为CmapAppView重载OnInitialUpdate()函数,然后在函数中添加显示地图窗口的代码。
更多精彩
赞助商链接