加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2011-11-09 14:40:14)
标签:

mfc

状态栏

本文介绍了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、标题 = 新建面板。

http://s2/middle/8584c97cnb147eff9b231&690状态栏相关使用(CStatusBar CStatusBarCtrl)" TITLE="MFC 状态栏相关使用(CStatusBar CStatusBarCtrl)" />

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

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

ID_NEW_PANE
};

 

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

http://s5/middle/8584c97cnb147feb96e64&690状态栏相关使用(CStatusBar CStatusBarCtrl)" TITLE="MFC 状态栏相关使用(CStatusBar CStatusBarCtrl)" />

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”为面板的索引

 

运行效果如下:

http://s13/middle/8584c97cnb1488cca850c&690状态栏相关使用(CStatusBar CStatusBarCtrl)" TITLE="MFC 状态栏相关使用(CStatusBar CStatusBarCtrl)" />

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有