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”为面板的索引
运行效果如下:
没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。