状态栏使用

一、函数介绍

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

为状态栏窗口添加面板,设置面板ID
BOOL 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


}

3.代码

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值