我做的是一个利用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);
}

解决方案 »

  1.   

    this->SetTimer(ID1, 时间(毫秒单位), NULL);void CAaaaaaView::OnTimer(UINT nIDEvent)  
    {
    switch(nIDEvent)
    {
    case ID1:
    break;
    case ID2
    break;
    }
    CView::OnTimer(nIDEvent);
    }就是想在哪里设置计时都行.只是你要吧ID弄清楚别混了就行了.
    停止计时器的方法为KillTimer(ID); 关闭某个计时器;
      

  2.   

    你设置的时候用SetTimer,第一个参数就是你要设定的ID。。
    然后OnTimer(UINT nIDEvent)里面,你就判定nIDEvent是哪个ID就可以了。。
      

  3.   

    设置定时器,每5秒调用Invalidate(TRUE)
      

  4.   

    在onDraw里面编写你需要的功能代码
      

  5.   

    自己调用MapX控件的方法啊。 
      

  6.   

    就是我现在把OnTimer函数写上去也调试成功了,然后也用MapX将地图显示出来了可是还是没有显示坐标啊???怎么解决啊???各位高手帮帮我啊!!!!我的毕业设计马上就要到时间了................
      

  7.   

    可以在MapX的图元的属性里面设置坐标
    找个文档看一下Mapx的集中对象的使用就清楚了
      

  8.   


    我就是想在地图上随着鼠标移动然后坐标在地图上显示出来,就是类似于CAD一样,鼠标移动坐标就在左下角显示一样...    
      

  9.   

    我知道你想显示坐标
    我是问题你是要自己绘制出来还是MapX自带了显示坐标的功能
      

  10.   

    你自己在OnPaint函数中调用显示坐标不就可以了
      

  11.   

    OnPaint函数中代码怎么写啊???