麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

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-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

留言板(小编看到第一时间回复)