MFC:CStatusBar的用法

rel="File-List" href="file:///C:%5CUsers%5Czhuyhhp%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"> rel="themeData" href="file:///C:%5CUsers%5Czhuyhhp%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"> rel="colorSchemeMapping" href="file:///C:%5CUsers%5Czhuyhhp%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml">

20081227日星期六

http://msdn.microsoft.com/zh-cn/library/cc451464(VS.71).aspx

有关使用 Microsoft 基础类 (MFC) 库创建应用程序用户界面的更多信息,请参见下列主题。

 

http://msdn.microsoft.com/zh-cn/library/cc468187(VS.71).aspx

如果只是讲用法, 微软的这篇说明就已经讲得很清楚了.

不过我不喜欢直截了当的答案. 问一道题, 告诉我结果, 哪怕是正确的, 也于我没有任何长进. 反而害我死记硬背地复制一个答案吗? 我要知道原理, 有些是要自己悟的. 就是从一个问题中抽象出规律.

建议使用 SetText 方法。可以通过调用 CStatusBar 成员函数 SetPaneText 在稍微低一些的级别执行该任务。即使如此,仍旧需要一个更新处理函数。如果窗格没有这样一个处理函数,MFC 会自动禁用该窗格并清除它的内容。

 

1.      处理的核心是主框架类的成员CStatusBar对象.

2.      它的分格是通过主框架类文件的静态全局变量static UINT indicators[] 来实现.

3.      每一个分格对应的内容是字符串列表的ID, 这也算是初化字符串

 

现在需要在其中加入一个自定义的状态信息. 围绕着这三个特征来处理.

1.      在全局变量中, 加入一个自定义的字符串资源ID

2.      CStatusBar对象的初始化函数之后, 设置这一新状态的风格. CStatusBar::SetPaneInfo

3.      我相信在CStatusBar内置了一些常用状态项的内容变更响应. 但是对于自己定义的, 它无动于衷. 那就只好自己来实现了. MSDN中有句话说得好: 即使如此,仍旧需要一个更新处理函数。如果窗格没有这样一个处理函数,MFC 会自动禁用该窗格并清除它的内容。

4.      那就要为这一项加入更新处理函数. 和普通的菜单条启用和禁用一样格式

函数声明: afx_msg void OnUpdateBar(CCmdUI* pCmdUI); 其映射宏为ON_UPDATE_COMMAND_UI

5.       当然, 加在状态栏的数据, 不一定是MainFrm所能提供. 我就可以在其他类中来实现修改了. 调用SetPaneText函数.


了解了主干之后, 也要注意细节, 默认的第一个ID是ID_SEPARATOR, 加入之后, 它会根据鼠标的位置来加载相关的对应字符串, 比如把它移到工具栏上的某个按钮上, 状态栏上会显示该按钮的提示信息. 下一个问题, 这功能是怎么实现的?


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值