VC学习笔记:状态栏
SkySeraph NOV.24th 2010 HQU
Email-zgzhaobo@gmail.com QQ-452728574
Latest Modified Date:NOV.25th 2010 HQU
实例学习
- 1 新建对话框程序
- 2 为Dlg类添加成员变量数 CStatusBar m_StatusBar; 在对话框上添加进度条控件并关联变量m_Progress
- 3 在Dlg类OnInitDialg中添加如下代码
/*新建数组*/
UINT array[6];
for(int n=0;n<6;n++)
{
array[n] = 1001 +1;//为数组赋值
}
/*① 创建状态栏*/
m_StatusBar.Create(this);//默认ID
/*② 添加面板*/
m_StatusBar.SetIndicators(array,sizeof(array)/sizeof(UINT));//求数组元素 【方法】
/////参数说明:面板ID、数组元素数量
/*③ 设置面板宽度*/
CRect rect;
GetClientRect(rect);
UINT ParentWidth = rect.Width()/6;
for( int i=0;i<6;i++)//根据面板数循环
{
m_StatusBar.SetPaneInfo(i,array[i],0,ParentWidth);//设置面板宽度
}
/*④ 设置面板文本*/
m_StatusBar.SetPaneText(0,"当前用户:");//设置面板文本
m_StatusBar.SetPaneText(1,"Sky");
m_StatusBar.SetPaneText(2,"当前状态:");
//系统时间获取并设置到面板文本上
CTime time = CTime::GetCurrentTime();
m_StatusBar.SetPaneText(4,"当前时间:");
m_StatusBar.SetPaneText(5,time.Format("%Y-%m-%d"));
/*⑤ 显示状态栏*/
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);//显示状态栏
/////在状态栏上显示控件 【思路】
RECT m_rect;
m_StatusBar.GetItemRect(3,&m_rect);//获得显示控件的面板区域
//参数说明:面板ID、面板的显示区域
m_Progress.SetParent(&m_StatusBar);//设置进度条的父窗口为状态栏
m_Progress.MoveWindow(&m_rect);//
m_Progress.ShowWindow(SW_SHOW);
m_Progress.SetRange(0,30);
m_Progress.SetPos(15);
/////带滚动字幕的状态栏 待补充。。。
。。。
/*⑥ 状态栏随对话框窗口大小而变化*/
//关于此方法请查阅"界面技巧" 之 "控件大小随窗口而调整"
m_Resize.SetOwner(this);
m_Resize.SetResize(AFX_IDW_STATUS_BAR,PK_BOTTOM_LEFT,PK_BOTTOM_RIGHT);//AFX_IDW_STATUS_BAR为状态栏默认的ID
- 【思路总结】
创建CStatusBar类变量;创建状态栏create;添加面板setIndicators;设置面板宽度SetPaneInfo;设置面板文本SetPaneText;显示状态栏RepositionBars;状态栏随窗口变化
- 参考:
[1] 刘锐宁等.Visual C++从入门到精通[M].北京:清华大学出版社,2009.11
Author: SKySeraph
Email/GTalk: zgzhaobo@gmail.com QQ:452728574
From: http://www.cnblogs.com/skyseraph/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,请尊重作者的劳动成果。