我做的是一个利用VC来加载MapX电子地图的程序,现在想让地图每隔5秒刷新显示坐标信息,请问我应该怎么添加代码???
我的View.cpp代码如下:
// aaaaaaView.cpp : implementation of the CAaaaaaView class
//#include "stdafx.h"
#include "aaaaaa.h"#include "aaaaaaDoc.h"
#include "aaaaaaView.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif/////////////////////////////////////////////////////////////////////////////
// CAaaaaaViewIMPLEMENT_DYNCREATE(CAaaaaaView, CView)BEGIN_MESSAGE_MAP(CAaaaaaView, CView)
//{{AFX_MSG_MAP(CAaaaaaView)
ON_WM_CREATE()
ON_WM_SIZE()
ON_WM_SETFOCUS()
ON_COMMAND(ID_ZOOM_IN, OnZoomIn)
ON_COMMAND(ID_ZOOM_OUT, OnZoomOut)
ON_COMMAND(ID_Add_Line, OnAddLine)
ON_COMMAND(ID_Add_Point, OnAddPoint)
ON_COMMAND(ID_Add_Region, OnAddRegion)
ON_COMMAND(ID_Arrow, OnArrow)
ON_COMMAND(ID_Center, OnCenter)
ON_COMMAND(ID_Label, OnLabel)
ON_COMMAND(ID_Pan, OnPan)
ON_COMMAND(ID_PolygonSelect, OnPolygonSelect)
ON_COMMAND(ID_RadiusSelect, OnRadiusSelect)
ON_COMMAND(ID_RectSelect, OnRectSelect)
ON_COMMAND(ID_Select, OnSelect)
ON_COMMAND(ID_Symbol, OnSymbol)
ON_COMMAND(ID_Text, OnText)
ON_WM_TIMER()
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////
// CAaaaaaView construction/destructionCAaaaaaView::CAaaaaaView()
{
// TODO: add construction code here}CAaaaaaView::~CAaaaaaView()
{
}BOOL CAaaaaaView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs return CView::PreCreateWindow(cs);
}/////////////////////////////////////////////////////////////////////////////
// CAaaaaaView drawingvoid CAaaaaaView::OnDraw(CDC* pDC)
{
CAaaaaaDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}/////////////////////////////////////////////////////////////////////////////
// CAaaaaaView printingBOOL CAaaaaaView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}void CAaaaaaView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}void CAaaaaaView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}/////////////////////////////////////////////////////////////////////////////
// CAaaaaaView diagnostics#ifdef _DEBUG
void CAaaaaaView::AssertValid() const
{
CView::AssertValid();
}void CAaaaaaView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}CAaaaaaDoc* CAaaaaaView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CAaaaaaDoc)));
return (CAaaaaaDoc*)m_pDocument;
}
#endif //_DEBUG/////////////////////////////////////////////////////////////////////////////
// CAaaaaaView message handlersint CAaaaaaView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
if(!m_ctrlMapX.Create(NULL,WS_VISIBLE, CRect(0,0,100,100),this,IDC_MAP))
return -1;
m_ctrlMapX.SetGeoSet("D:\\论文\\GPS导航系统\\成果\\aaaaaa\\西安\\西安.gst"); //加载地图
return 0;
}void CAaaaaaView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
m_ctrlMapX.MoveWindow(0,0,cx,cy,TRUE);
}void CAaaaaaView::OnSetFocus(CWnd* pOldWnd)
{
CView::OnSetFocus(pOldWnd);
m_ctrlMapX.SetFocus();
}void CAaaaaaView::OnZoomIn()
{
m_ctrlMapX.SetCurrentTool(miZoomInTool);// miZoomInTool为放大工具常量
}void CAaaaaaView::OnZoomOut()
{
m_ctrlMapX.SetCurrentTool(miZoomOutTool);
}void CAaaaaaView::OnAddLine()
{
m_ctrlMapX.SetCurrentTool(miAddLineTool);
}void CAaaaaaView::OnAddPoint()
{
m_ctrlMapX.SetCurrentTool(miAddPointTool);
}void CAaaaaaView::OnAddRegion()
{
m_ctrlMapX.SetCurrentTool(miAddRegionTool);
}void CAaaaaaView::OnArrow()
{
m_ctrlMapX.SetCurrentTool(miArrowTool);
}void CAaaaaaView::OnCenter()
{
m_ctrlMapX.SetCurrentTool(miCenterTool);
}void CAaaaaaView::OnLabel()
{
m_ctrlMapX.SetCurrentTool(miLabelTool);
}void CAaaaaaView::OnPan()
{
m_ctrlMapX.SetCurrentTool(miPanTool);
}void CAaaaaaView::OnPolygonSelect()
{
m_ctrlMapX.SetCurrentTool(miPolygonSelectTool);
}void CAaaaaaView::OnRadiusSelect()
{
m_ctrlMapX.SetCurrentTool(miRadiusSelectTool);
}void CAaaaaaView::OnRectSelect()
{
m_ctrlMapX.SetCurrentTool(miRectSelectTool);
}void CAaaaaaView::OnSelect()
{
m_ctrlMapX.SetCurrentTool(miSelectTool);
}void CAaaaaaView::OnSymbol()
{
m_ctrlMapX.SetCurrentTool(miSymbolTool);
}void CAaaaaaView::OnText()
{
m_ctrlMapX.SetCurrentTool(miTextTool);
}void CAaaaaaView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CView::OnTimer(nIDEvent);
}
我的View.cpp代码如下:
// aaaaaaView.cpp : implementation of the CAaaaaaView class
//#include "stdafx.h"
#include "aaaaaa.h"#include "aaaaaaDoc.h"
#include "aaaaaaView.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif/////////////////////////////////////////////////////////////////////////////
// CAaaaaaViewIMPLEMENT_DYNCREATE(CAaaaaaView, CView)BEGIN_MESSAGE_MAP(CAaaaaaView, CView)
//{{AFX_MSG_MAP(CAaaaaaView)
ON_WM_CREATE()
ON_WM_SIZE()
ON_WM_SETFOCUS()
ON_COMMAND(ID_ZOOM_IN, OnZoomIn)
ON_COMMAND(ID_ZOOM_OUT, OnZoomOut)
ON_COMMAND(ID_Add_Line, OnAddLine)
ON_COMMAND(ID_Add_Point, OnAddPoint)
ON_COMMAND(ID_Add_Region, OnAddRegion)
ON_COMMAND(ID_Arrow, OnArrow)
ON_COMMAND(ID_Center, OnCenter)
ON_COMMAND(ID_Label, OnLabel)
ON_COMMAND(ID_Pan, OnPan)
ON_COMMAND(ID_PolygonSelect, OnPolygonSelect)
ON_COMMAND(ID_RadiusSelect, OnRadiusSelect)
ON_COMMAND(ID_RectSelect, OnRectSelect)
ON_COMMAND(ID_Select, OnSelect)
ON_COMMAND(ID_Symbol, OnSymbol)
ON_COMMAND(ID_Text, OnText)
ON_WM_TIMER()
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////
// CAaaaaaView construction/destructionCAaaaaaView::CAaaaaaView()
{
// TODO: add construction code here}CAaaaaaView::~CAaaaaaView()
{
}BOOL CAaaaaaView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs return CView::PreCreateWindow(cs);
}/////////////////////////////////////////////////////////////////////////////
// CAaaaaaView drawingvoid CAaaaaaView::OnDraw(CDC* pDC)
{
CAaaaaaDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}/////////////////////////////////////////////////////////////////////////////
// CAaaaaaView printingBOOL CAaaaaaView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}void CAaaaaaView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}void CAaaaaaView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}/////////////////////////////////////////////////////////////////////////////
// CAaaaaaView diagnostics#ifdef _DEBUG
void CAaaaaaView::AssertValid() const
{
CView::AssertValid();
}void CAaaaaaView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}CAaaaaaDoc* CAaaaaaView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CAaaaaaDoc)));
return (CAaaaaaDoc*)m_pDocument;
}
#endif //_DEBUG/////////////////////////////////////////////////////////////////////////////
// CAaaaaaView message handlersint CAaaaaaView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
if(!m_ctrlMapX.Create(NULL,WS_VISIBLE, CRect(0,0,100,100),this,IDC_MAP))
return -1;
m_ctrlMapX.SetGeoSet("D:\\论文\\GPS导航系统\\成果\\aaaaaa\\西安\\西安.gst"); //加载地图
return 0;
}void CAaaaaaView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
m_ctrlMapX.MoveWindow(0,0,cx,cy,TRUE);
}void CAaaaaaView::OnSetFocus(CWnd* pOldWnd)
{
CView::OnSetFocus(pOldWnd);
m_ctrlMapX.SetFocus();
}void CAaaaaaView::OnZoomIn()
{
m_ctrlMapX.SetCurrentTool(miZoomInTool);// miZoomInTool为放大工具常量
}void CAaaaaaView::OnZoomOut()
{
m_ctrlMapX.SetCurrentTool(miZoomOutTool);
}void CAaaaaaView::OnAddLine()
{
m_ctrlMapX.SetCurrentTool(miAddLineTool);
}void CAaaaaaView::OnAddPoint()
{
m_ctrlMapX.SetCurrentTool(miAddPointTool);
}void CAaaaaaView::OnAddRegion()
{
m_ctrlMapX.SetCurrentTool(miAddRegionTool);
}void CAaaaaaView::OnArrow()
{
m_ctrlMapX.SetCurrentTool(miArrowTool);
}void CAaaaaaView::OnCenter()
{
m_ctrlMapX.SetCurrentTool(miCenterTool);
}void CAaaaaaView::OnLabel()
{
m_ctrlMapX.SetCurrentTool(miLabelTool);
}void CAaaaaaView::OnPan()
{
m_ctrlMapX.SetCurrentTool(miPanTool);
}void CAaaaaaView::OnPolygonSelect()
{
m_ctrlMapX.SetCurrentTool(miPolygonSelectTool);
}void CAaaaaaView::OnRadiusSelect()
{
m_ctrlMapX.SetCurrentTool(miRadiusSelectTool);
}void CAaaaaaView::OnRectSelect()
{
m_ctrlMapX.SetCurrentTool(miRectSelectTool);
}void CAaaaaaView::OnSelect()
{
m_ctrlMapX.SetCurrentTool(miSelectTool);
}void CAaaaaaView::OnSymbol()
{
m_ctrlMapX.SetCurrentTool(miSymbolTool);
}void CAaaaaaView::OnText()
{
m_ctrlMapX.SetCurrentTool(miTextTool);
}void CAaaaaaView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CView::OnTimer(nIDEvent);
}
{
switch(nIDEvent)
{
case ID1:
break;
case ID2
break;
}
CView::OnTimer(nIDEvent);
}就是想在哪里设置计时都行.只是你要吧ID弄清楚别混了就行了.
停止计时器的方法为KillTimer(ID); 关闭某个计时器;
然后OnTimer(UINT nIDEvent)里面,你就判定nIDEvent是哪个ID就可以了。。
找个文档看一下Mapx的集中对象的使用就清楚了
我就是想在地图上随着鼠标移动然后坐标在地图上显示出来,就是类似于CAD一样,鼠标移动坐标就在左下角显示一样...
我是问题你是要自己绘制出来还是MapX自带了显示坐标的功能