MFC 状态栏相关使用(CStatusBar & CStatusBarCtrl)

简介:


本文介绍了MFC中和状态栏相关的用法:

在MFC的的单文档应用中,在建好应用程序之后,CMainFrame类中定义了状态栏对象CStatusBar  m_wndStatusBar; 而在int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)函数中做了状态栏的创建,代码如下:

if (!m_wndStatusBar.Create(this) ||
  !m_wndStatusBar.SetIndicators(indicators,
  sizeof(indicators)/sizeof(UINT)))
 {
  TRACE0("未能创建状态栏n");
  return -1;      // 未能创建
 }

 

运行程序后,状态栏的右下角默认有三个Pane,其定义在MainFrm.cpp文件中,代码如下:

static UINT indicators[] =
{
 ID_SEPARATOR,           // 状态行指示器
 ID_INDICATOR_CAPS,
 ID_INDICATOR_NUM,
 ID_INDICATOR_SCRL
};

1.添加一个Pane

可向indicators数组里面添加一个元素,如ID_NEW_PANE,该元素是一个字符串资源。

具体方法:

1). 切换到资源视图,打开String Table,在里面新建一项,ID、值和标题随便取。如ID = ID_NEW_PANE、值=111、标题 = 新建面板。

2). 将刚刚新建的ID_NEW_PANE,加入在indicators 数组里面,如:

static UINT indicators[] =
{
ID_SEPARATOR, // 状态行指示器
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,

ID_NEW_PANE
};

 

3). 运行结果如下图所示:


2. 获取/修改面板属性

CStatusBar类提供了相应的函数,如GetPaneInfo/SetPaneInfo、GetPaneText/SetPaneText等。

详情参见:

http://msdn.microsoft.com/en-us/library/804zsxbb(v=vs.80).aspx

 

3. 设置Pane图标、设置Pane背景色等。

CStatusBar中,CStatusBarCtrl& GetStatusBarCtrl()函数可获得 CStatusBarCtrl对象,利用该对象可设置Pane的图标、背景色、文字等相关内容。具体函数说明请参见:

http://msdn.microsoft.com/zh-cn/library/822c9zyt.aspx

 

下面以设置图标为例说明具体的使用。步骤如下:

1)切换到资源视图,在Icon栏目下面新建一个图标,ID取名为IDC_NEW_ICON

2) 在要更改图标的地方添加如下代码:

HINSTANCE hInst = AfxFindResourceHandle(MAKEINTRESOURCE(IDC_NEW_ICON),RT_GROUP_ICON);
HICON m_hIcon = (HICON)LoadImage(hInst,MAKEINTRESOURCE(IDC_NEW_ICON),IMAGE_ICON,16,16,LR_DEFAULTCOLOR);

m_wndStatusBar.GetStatusBarCtrl().SetIcon(4, m_hIcon);  //“4”为面板的索引

 

运行效果如下:

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。



    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/5929312.html,如需转载请自行联系原作者



相关文章
|
开发工具 Windows
关于 fatal error LNK1158: 无法运行“rc.exe” 的解决方法
关于 fatal error LNK1158: 无法运行“rc.exe” 的解决方法
关于 fatal error LNK1158: 无法运行“rc.exe” 的解决方法
|
Kubernetes Cloud Native 容器
完全免费的K8S学习平台:在线集群环境助力你的云原生之路!
完全免费的K8S学习平台:在线集群环境助力你的云原生之路!
3155 1
|
存储 安全 数据库
|
C++ 容器
掌握C++定时器:构建自己的定时器的分步指南
本文是一份详细的、分步指南,旨在帮助读者掌握C++定时器的构建过程。通过本文,读者将了解到什么是定时器,以及为什么需要自己构建定时器而不仅仅使用标准库中的函数。文章将从基础开始,介绍了利用C++的基本语法和操作符创建一个简单的定时器的步骤。随后,文章逐渐深入,介绍了如何优化定时器的性能,包括减少延迟和提高精度。
983 0
|
算法 C语言 C++
C++ std::chrono库使用指南 (实现C++ 获取日期,时间戳,计时等功能)(一)
C++ std::chrono库使用指南 (实现C++ 获取日期,时间戳,计时等功能)
4980 1
|
8月前
|
存储 人工智能 监控
星云智控科技-优雅草星云物联网AI智控系统软件产品技术栈一览表-优雅草卓伊凡
星云智控科技-优雅草星云物联网AI智控系统软件产品技术栈一览表-优雅草卓伊凡
253 7
星云智控科技-优雅草星云物联网AI智控系统软件产品技术栈一览表-优雅草卓伊凡
|
机器学习/深度学习 自然语言处理 算法框架/工具
[Longformer]论文实现:Longformer: The Long-Document Transformer
[Longformer]论文实现:Longformer: The Long-Document Transformer
484 1
|
C# 开发者 Windows
WPF遇上Office:一场关于Word与Excel自动化操作的技术盛宴,从环境搭建到代码实战,看WPF如何玩转文档处理的那些事儿
【8月更文挑战第31天】Windows Presentation Foundation (WPF) 是 .NET Framework 的重要组件,以其强大的图形界面和灵活的数据绑定功能著称。本文通过具体示例代码,介绍如何在 WPF 应用中实现 Word 和 Excel 文档的自动化操作,包括文档的读取、编辑和保存等。首先创建 WPF 项目并设计用户界面,然后在 `MainWindow.xaml.cs` 中编写逻辑代码,利用 `Microsoft.Office.Interop` 命名空间实现 Office 文档的自动化处理。文章还提供了注意事项,帮助开发者避免常见问题。
972 0
|
Ubuntu Linux 网络安全
在Linux中,如何配置VPN连接?
在Linux中,如何配置VPN连接?
|
Ubuntu 网络协议 关系型数据库