麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

VC++开发GIS系统(52)补充知识Ribbon界面自定义状态栏

在之前的文章《VC++开发GIS系统(49)屏幕坐标转换编码》和《VC++开发GIS系统(50)使用自定义平面坐标系》中,我使用的方法是点击屏幕,弹出对话框,然后在对话框中显示点击位置的坐标信息。但这只是测试,在实际的应用中一般的GIS软件都会实时显示当前鼠标的坐标信息。所以在后面的文章中将尝试实现实时显示坐标的功能,首先应该学会自定义状态栏。

查看系统自带状态栏代码

系统自带的状态栏代码在MainFrm.cpp中如下:

if (!m_wndStatusBar.Create(this))
{
    TRACE0("未能创建状态栏\n");
    return -1;      // 未能创建
}

CString strTitlePane1;
CString strTitlePane2;
bNameValid = strTitlePane1.LoadString(IDS_STATUS_PANE1);
ASSERT(bNameValid);
bNameValid = strTitlePane2.LoadString(IDS_STATUS_PANE2);
ASSERT(bNameValid);
m_wndStatusBar.AddElement(new CMFCRibbonStatusBarPane(ID_STATUSBAR_PANE1, strTitlePane1, TRUE), strTitlePane1);
m_wndStatusBar.AddExtendedElement(new CMFCRibbonStatusBarPane(ID_STATUSBAR_PANE2, strTitlePane2, TRUE), strTitlePane2);

从上面的代码来看,创建过程分为2步,先是给这个窗格赋一个名称,然后显示这个窗格。其中AddElement是新建在状态栏的左边,AddExtendedElement是新建在状态栏的右边,也就是扩展窗格。如图:

自定义方法

依照上面的代码,依葫芦画瓢。

简化方法

CString strTitlePane1=L"测试窗格";

m_wndStatusBar.AddElement(new CMFCRibbonStatusBarPane(100000, strTitlePane1, TRUE), strTitlePane1);

其中100000是要设置窗格的ID,strTitlePane1是设置窗格的标题,这里可以写死,也可以运行,不过并不推荐这种方法。

官方方法

也可以使用官方的方法来增加状态栏显示的窗格,不过要设置两个ID,一个是IDS_STATUS_PANE1,一个是ID_STATUSBAR_PANE1。

IDS_STATUS_PANE1可以通过资源视图的String Table设置

ID_STATUSBAR_PANE1这个ID可以在解决方案的Resource.h中设置

剩下的就是画瓢就可以了。

相关阅读

麻辣GIS-Sailor

作者:

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

声明

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

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

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

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