VC++开发GIS系统(54)Ribbon状态栏实时显示坐标

有了之前文章《VC++开发GIS系统(52)补充知识Ribbon界面自定义状态栏》做基础,现在可以实现动态显示坐标了,具体方法如下:

在XXXXView.cpp中的onMouseMove函数添加下面的代码:

void CmalagisView::OnMouseMove(UINT nFlags, CPoint point)
{
    // TODO:  在此添加消息处理程序代码和/或调用默认值
    /*
    * 实时显示坐标
    */
    //View中获取MainFrame指针
    CMainFrame *pMainFrame = (CMainFrame *)AfxGetApp()->m_pMainWnd;
    //获取状态栏指针
    CMFCRibbonStatusBar *statusBar = (CMFCRibbonStatusBar *)pMainFrame->GetDescendantWindow(AFX_IDW_STATUS_BAR);
    //更改坐标
    malaPoint MyPoint;
    ScreenToCoord(point.x, point.y, mScreen, &MyPoint.x, &MyPoint.y);
    CString str;
    str.Format(_T("X=%f,Y=%f"), MyPoint.x, MyPoint.y);
    statusBar->GetElement(2)->SetText(str);
    statusBar->GetElement(2)->Redraw();

    CView::OnMouseMove(nFlags, point);
}

其中下面的代码是在view中获取mainframe的中的状态栏的指针。

    //View中获取MainFrame指针
    CMainFrame *pMainFrame = (CMainFrame *)AfxGetApp()->m_pMainWnd;
    //获取状态栏指针
    CMFCRibbonStatusBar *statusBar = (CMFCRibbonStatusBar *)pMainFrame->GetDescendantWindow(AFX_IDW_STATUS_BAR);

然后用

    statusBar->GetElement(2)->SetText(str);
    statusBar->GetElement(2)->Redraw();

状态栏的函数更改文字。效果如下:

如果编译出现下面错误

error C2065: “CMainFrame”: 未声明的标识符

解决方法《VC++开发GIS系统(53)补充知识MFC中View调用CMainFrame未声明的标识符

本项目代码:GitHub

其他相关文章

如果对本文有其他疑问,可以在本文下方留言。 如果有其他GIS、3S相关疑问也可以到 麻辣GIS问答 版块发表提问。
本站QQ群:291616564; 微信公众号:malagis,扫描 二维码 直接关注。

打赏¥1

作者:,GIS爱好者。
分享本文,请您带上本文链接
分享到:

发表评论