这个问题仍然没有解决,现在的想法是当鼠标放在地图上时,将所在位置的经纬度信息显示在状态栏中,应如何做?谢谢?

解决方案 »

  1.   

    得到经纬度数据后用如下函数 在状态栏中显示CStatusBar::SetPaneText(
       int nIndex,
       LPCTSTR lpszNewText,
       BOOL bUpdate = TRUE 
    );
      

  2.   

    现在的问题是以下几个:
    首先,这个鼠标放在地图上就可以显示经纬度的事件要怎么触发,也就是将语句写在哪个函数里?
    其次,经纬度怎么得到的?
    最后,CStatusBar::SetPaneText中的nIdex是什么意思?谢谢!
      

  3.   

    还没解决?我给你讲详细点吧.
    1.xxxView.h中定义
    BOOL OnMouseMoveInMap(short Button, short Shift, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
    2.xxxView.cpp中添加消息影射:
    BEGIN_EVENTSINK_MAP(CxxxView, CView)
    ON_EVENT(CxxxView, IDC_MAP, DISPID_MOUSEMOVE, OnMouseMoveInMap, VTS_I2 VTS_I2 VTS_XPOS_PIXELS VTS_YPOS_PIXELS)END_EVENTSINK_MAP()
    3.实现
    BOOL CMonGraphView::OnMouseMoveInMap(short Button, short Shift, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y)
    {
        double dbMapCoordX, dbMapCoordY;  //地图坐标
    float fScreenCoordX, fScreenCoordY;
    fScreenCoordX = (float)(x);
    fScreenCoordY = (float)(y);// 屏幕坐标转换为地图坐标
    m_ctrlMapX.ConvertCoord(&fScreenCoordX,
    &fScreenCoordY,
    &dbMapCoordX,
    &dbMapCoordY,
    miScreenToMap);
    CString strShow;  //显示信息
    strShow.Format("(%.4f, %.4f)", dbMapCoordX, dbMapCoordY);
       ((CMainFrame *)AfxGetMainWnd())->m_wndStatusBar.SetPaneText(0, strShow);
    }
      

  4.   

    m_wndStatusBar在CMainFrm里设为public
      

  5.   

    ON_EVENT(CxxxView, IDC_MAP, DISPID_MOUSEMOVE, OnMouseMoveInMap, VTS_I2 VTS_I2 VTS_XPOS_PIXELS VTS_YPOS_PIXELS)
    这条语句OnMouseInMap后面的是什么意思?每个词组之间有逗号吗?
      

  6.   

    error C2509: 'GetEventSinkMap' : member function not declared in 'CMapShowView'
    这个错误是怎么回事儿?
    上面那个问题我知道了,好像之间都是空格。
      

  7.   

    好像是要在头文件中添加DECLARE_EVENTSINK_MAP宏,但我添加了几个位置都不对,应该在哪个位置添加这个宏啊?
      

  8.   

    在view类尾部加就行了
    DECLARE_EVENTSINK_MAP()
      

  9.   

    搞定了,谢谢少帅!
    昨天晚上就搞定了,但论坛设定的连续回复不能超过三次,就没回成。
    我是这么添加DECLARE_EVENTSINK_MAP宏的:
    DECLARE_EVENTSINK_MAP()应该加在该类的头文件的最后。例如:
    protected:
    //{{AFX_MSG(CMapShowView)
    afx_msg void OnSize(UINT nType, int cx, int cy);
    afx_msg void OnSetFocus(CWnd* pOldWnd);
    afx_msg void OnMouseMove(UINT nFlags, CPoint point);
    afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
    afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
    DECLARE_EVENTSINK_MAP()