VC学习笔记:状态栏
原文链接: http://www.cnblogs.com/skyseraph/archive/2010/11/27/1889952.html
实例学习
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;状态栏随窗口变化