第一步创建一个新工程:Query1创建一个工作目录C:\MyProject2.启动Visual Studio20053.在工作目录C:\MyProject 下创建一个新应用: Query注:在SDK选择中,只有Pocket PC2003和Smartphone2003是安装VS2005时自带的,Mobile 5.0的SDK是需要另外安装的,也就是在工程新建之前就安装这个SDK,常用SDK在网上可以下载到。
选择使用动态链接库第二步配置开发环境2.1 设置头文件/库文件搜索路径●设置头文件搜索路径:Project ->Query Property Pages ->c/c++->General ->AdditionalInclude Directories,如下图。
●在此路径下加上DOTNET2005:Project ->Query Property Pages->c/c++->Preprocessor->Preprocessor Definitions,如下图。
Library Directories,如下图。
2.2 在StdAfx.h中包含eSuperMap 5.3 类库头文件第三步添加工作空间、地图窗口实例3.1 在“C Query App”中定义变量, 如下图:3.2 在“C Query View”中定义成员变量,如下图:第四步设置菜单项并生成消息响应函数利用eSuperMap,可以很方便地进行地图的基本操作,如放大、缩小、漫游、全幅显示、地图刷新等等。
下面以放大、缩小、漫游、全幅显示、地图刷新功能为例予以说明。
4.1 设置文件菜单注:修改事件的ID时可以直接在右侧的Menu Editor IMenuEd工具中完成,如下图4.2 地图操作菜单4.3 生成菜单消息响应函数1. 选中CQueryView,点击类似闪电的按钮,可以在这里生成消息响应函数,如下图:可以删除消息响应函数也可以进入编辑消息代码的界面,如下图4.4 生成鼠标消息响应函数选中CQueryView,点击如下图的按钮, 可以生成系统消息响应函数如OnLButtonDown、OnLButtonUp函数等,如下图:第五步实现消息映射函数void CQueryView::OnDraw(CDC*pDC){CQueryDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);CRect rcClient;GetClientRect( &rcClient );//显示地图m_MapWnd.OnDraw(pDC, rcClient,rcClient);}void CQueryView::OnFileOpen(){//默认打开第一幅地图,否则新建Untitled地图,等待添加图层CFileDialog dlgFile(true, _T("pmw|pmw|*.*"), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("WorkSpace Files (*.pmw)|*.pmw") );if( dlgFile.DoModal() == IDOK ){//如果已经打开工作空间文件,则关闭if(theApp.m_WorkSpace.IsOpen()){theApp.m_WorkSpace.Close();m_MapWnd.Close();}//获得图形文件的完整路径及文件名CString strFileName = dlgFile.GetPathName();//打开工作空间if( theApp.m_WorkSpace.Open( strFileName ) ){//与地图窗口关联m_MapWnd.OnInitialUpdate( &theApp.m_WorkSpace, this );CSeMaps *pMaps = theApp.m_WorkSpace.GetMaps();if( pMaps ){CSeMapDef MapDef;//有地图,则打开第一幅if ( pMaps->GetMapCount() != 0 ){CDlgSelect dlg;dlg.m_bMap = true;if ( dlg.DoModal() == IDOK ){if( pMaps->GetMap( dlg.m_strMapName, MapDef ) ){if(m_MapWnd.OpenMap(MapDef)){m_MapWnd.Refresh();}}}}}}}}void CQueryView::OnFileClose(){m_MapWnd.Close();theApp.m_WorkSpace.Close();m_MapWnd.Refresh();m_bFileOpened = false;}void CQueryView::OnMapZoomin(){//放大m_MapWnd.SetAction(CSeDrawParameters::uaZoomIn);}void CQueryView::OnMapZoomout(){//缩小m_MapWnd.SetAction(CSeDrawParameters::uaZoomOut);}void CQueryView::OnMapZoomfree(){//自由缩放m_MapWnd.SetAction(CSeDrawParameters::uaZoomFree);}void CQueryView::OnMapPan(){//平移m_MapWnd.SetAction(CSeDrawParameters::uaPan);}void CQueryView::OnMapViewEntire(){//整幅显示地图m_MapWnd.SetAction(CSeDrawParameters::uaNull);m_MapWnd.ViewEntire();}void CQueryView::OnMapRefresh(){//刷新m_MapWnd.SetAction(CSeDrawParameters::uaNull);m_MapWnd.Refresh();}void CQueryView::OnMapPointSelect(){//点选m_MapWnd.SetAction(CSeDrawParameters::uaPointModeSelect); }void CQueryView::OnMapRectSelect(){//框选m_MapWnd.SetAction(CSeDrawParameters::uaRectModeSelect); }void CQueryView::OnLButtonDown(UINT nFlags, CPoint point){m_MapWnd.OnLButtonDown(nFlags,point);//重载CView::OnLButtonDown(nFlags, point);}void CQueryView::OnLButtonUp(UINT nFlags, CPoint point){m_MapWnd.OnLButtonUp(nFlags,point);//重载CView::OnLButtonUp(nFlags, point);}void CQueryView::OnMouseMove(UINT nFlags, CPoint point){m_MapWnd.OnMouseMove(nFlags,point);//重载CView::OnMouseMove(nFlags, point);}第六步下载程序所依赖的库和数据到模拟器中1.Tools -> Remote File Viewer , 选择Pocket PC 2003 Emulation2. 点击Program Filees 目录,准备往Pocket PC 2003 Emulation\Program Filees\目录导入执行程序所依赖的库(RSFC\Bin\VC8\PocketPC2003\Emulator动态库),如下图:3. 往 Pocket PC 2003 Emulation\Program Filees\ 目录逐个导入执行程序所依赖的库( emulator 动态库 ), 如下图:4. 往Pocket PC 2003 Emulation\My Documents\ 目录逐个导入所使用的数据, 如下图:如下图,将该路径下四个选中的VS 2005库文件导入到模拟器中导入eSuperMap的lic文件第七步:编译、运行程序●部署成功●打开北京市地图至此,eSuperMap开发的简单的范例工程就已经做好,这里只是做了一个简单的介绍,抛砖引玉,希望大家在此基础上利用eSuperMap开发出更加实用优秀的工程。