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

VC++开发GIS系统(53)补充知识MFC中View调用CMainFrame未声明的标识符 VC++开发GIS系统(55)解决Ribbon状态栏显示内容不全

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

发表评论