一、函数介绍
1.Create
BOOL Create(CWnd* pParentWnd,DWORD dwStyle=WS_CHILD|WS_VISIBLE|CBRS_BOTTOM,UINT nID=AFX_IDW_STATUS_BAR);pParentWnd:状态栏父窗口
dwStyle:状态栏风格,CBRS_TOP=状态栏位于框架窗口顶部,CBRS_BOTTOM=底部,CBRS_NOALIGN=当父窗口重重新调整尺寸时不重新定位状态栏
nID:状态栏ID
2.CreateEx
BOOL CreateEx(CWnd* pParentWnd,DWORD dwCtrlStyle=0,DWORD dwStyle=WS_CHILD|WS_VISIBLE|CBRS_BOTTOM,UINT nID=AFX_IDW_STATUS_BAR);pParentWnd:状态栏父窗口
dwCtrlStyle:状态栏的扩展风格,SBARS_SIZEGRIP=在状态栏右侧有一个调整大小小定位状态栏控件,他是一个特别的区域,可以单击并拖动它来调整父窗口的大小;SBT_TOOLTIPS=状态栏支持工具提示
dwStyle:状态栏风格,CBRS_TOP=状态栏位于框架窗口顶部,CBRS_BOTTOM=底部,CBRS_NOALIGN=当父窗口重重新调整尺寸时不重新定位状态栏
nID:状态栏ID
3.SetIndicators
为状态栏窗口添加面板,设置面板IDBOOL SeetIndicators(const UINT* lpIDArray,int nIDCount);
lpIDArrray:一个无符号整型数组,该数组中包含了面板ID
nIDCount:数组元素数量
4.setPaneInfo
设置面板宽度void SetPaneInfo(int nIndex,UINT nID,UINT nStyle,int cxWidth);
nIndex:面板索引
nID:面板ID
nStyle:面板风格
cxWindth:面板宽度
5.SetPaneText
设置面板文本BOOL SetPanneText(int Index,LPCTSTR lpszNewText,BOOL bUpdate=TRUE);
nIndex:面板ID
lpszNewText:面板显示文本
bUpdate:是否立即更新面板
6.GetItemRect
获取显示控件的面板区域void GetItemRect(int nIndex,LPRECT lpRect)const;
nIndex:面板ID
lpRect:面板的显示区域
二、创建状态栏
1.声明
CStatusBar m_StatusBar;
2.BOOL CCreateStatusBarDlg::OnInitDialog()
{
// TODO: Add extra initialization here
UINT array[4];
for(int i=0;i<4;i++)
{
array[i] = 1001 + i;
}
m_StatusBar.Create(this); //创建状态栏窗口
m_StatusBar.SetIndicators(array,sizeof(array)/sizeof(UINT)); //添加面板
for(int n=0;n<4;n++)
{
m_StatusBar.SetPaneInfo(n,array[n],0,100); //设置面板宽度
}
CTime time = CTime::GetCurrentTime();
m_StatusBar.SetPaneText(0,"当前用户:");//设置面板文本
m_StatusBar.SetPaneText(1,"TM");
m_StatusBar.SetPaneText(2,"当前日期:");
m_StatusBar.SetPaneText(3,time.Format("%Y-%m-%d"));
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
return TRUE; // return TRUE unless you set the focus to a control
}
三、在状态栏显示控件
1.声明
CStatusBar m_StatusBar;
CProgressCtrl m_Progress;
2.BOOL CCreateStatusBarDlg::OnInitDialog()
{
// TODO: Add extra initialization here
UINT array[4];
for(int i=0;i<4;i++)
{
array[i] = 1001 + i;
}
m_StatusBar.Create(this); //创建状态栏窗口
m_StatusBar.SetIndicators(array,sizeof(array)/sizeof(UINT)); //添加面板
for(int n=0;n<4;n++)
{
m_StatusBar.SetPaneInfo(n,array[n],0,90); //设置面板宽度
}
//设置面板文本
m_StatusBar.SetPaneText(0,"当前用户:");
m_StatusBar.SetPaneText(1,"TM");
m_StatusBar.SetPaneText(2,"当前状态:");
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0); //显示状态栏
RECT m_rect;
m_StatusBar.GetItemRect(3,&m_rect); //获取第四个面板的区域
m_Progress.SetParent(&m_StatusBar); //设置进度条的父窗口为状态栏
m_Progress.MoveWindow(&m_rect); //设置进度条显示的位置
m_Progress.ShowWindow(SW_SHOW); //显示进度条控件
m_Progress.SetRange(0,30); //设置进度条范围
m_Progress.SetPos(20); //设置进度条当前位置
return TRUE; // return TRUE unless you set the focus to a control
}