MFC---底部状态栏


//常用
CStatusBar      m_statusbar;      //状态栏  
CProgressCtrl   m_progress;    //进度条  
//
static UINT indicators[] =    //指定状态栏上三个元素的ID  
	{
		IDS_TIME,
		IDS_PROGRESS,
		IDS_MOUSE,
		IDS_CAM1,
		IDS_CAM2
	};///需在Resource View的String Table中添加定义,同时更新Resource文件
	CRect rects;
	GetClientRect(&rects);
	m_statusbar.Create(this);           //创建空白状态栏  
	//设置状态栏上元素的ID及元素数量  
	m_statusbar.SetIndicators(indicators, sizeof(indicators) / sizeof(UINT));
	//设置状态栏3个元素的宽度  
	m_statusbar.SetPaneInfo(0, IDS_TIME, SBPS_NORMAL, 50);
	m_statusbar.SetPaneInfo(1, IDS_MOUSE, SBPS_NORMAL, 200);
	m_statusbar.SetPaneInfo(2, IDS_CAM1, SBPS_NORMAL, 200);
	m_statusbar.SetPaneInfo(3, IDS_CAM2, SBPS_NORMAL, 200);
	m_statusbar.SetPaneInfo(4, IDS_PROGRESS, SBPS_STRETCH, 0);
	m_statusbar.GetStatusBarCtrl().SetBkColor(RGB(180, 20, 180));//设置背景
	//设置显示的文字
	m_statusbar.SetPaneText(0, "就绪");
	m_statusbar.SetPaneText(1, "状态");
	m_statusbar.SetPaneText(2, "相机1");
	m_statusbar.SetPaneText(3, "相机2");
	//必须重新设置和调整状态栏大小,否则无法显示  
	RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);

	创建进度条  
	CRect rectPro;
	m_statusbar.GetItemRect(4, &rectPro);   //获取状态栏元素2的区间大小  
	//注意此处进度条的父窗口设置为状态栏  
	m_progress.Create(WS_CHILD | WS_VISIBLE, rectPro, &m_statusbar, 102);
	//设置初始位置  
	m_progress.SetPos(50);
	//设置步长  
	m_progress.SetStep(5);
	//
	//每过1s,进度条自动增长  
	m_progress.StepIt();  
///
//可用
 HWND hDlg = GetSafeHwnd();
	HWND hStatusWindow = CreateStatusWindowA(WS_CHILD | WS_VISIBLE | WS_BORDER,
		TEXT("就绪");//显示在状态栏上的信息  
		hDlg, //父窗口句柄  
		102); //预定义的资源ID,相当于状态栏的ID号:GetDlgItem(IDS_STATUS) 
//需在Resource View的String Table中添加定义,同时更新Resource文件
	int pint[5] = { 50, 400, 200, -1 };
	//状态栏第一个方格右边界离窗口客户区左边界的距离为100  
	//第二个方格右边界离窗口客户区左边界的距离为200  
	//...以此类推  
	//-1表示该方格的右边界为为窗口客户区的右边界  
	::SendMessage(hStatusWindow, SB_SETPARTS, 4, (LPARAM)pint);
	::SendMessage(hStatusWindow, SB_SETTEXT, 1, (LPARAM)TEXT("系统信息"));
	::SendMessage(hStatusWindow, SB_SETTEXT, 2, (LPARAM)TEXT("相机1"));
	::SendMessage(hStatusWindow, SB_SETTEXT, 3, (LPARAM)TEXT("相机2"));
//需要调用onsize函数,句柄为/预定义的资源ID
///
//可用
// 系统头文件
//实例化状态栏类
CStatusBarCtrl * m_StatBar ;
// 初始化函数
m_StatBar = new CStatusBarCtrl ;
        RECT m_Rect ;
        GetClientRect (& m_Rect ); // 获取对话框的矩形区域
        m_Rect . top = m_Rect . bottom - 50 ; // 设置状态栏的矩形区域
        m_StatBar -> Create ( WS_BORDER | WS_VISIBLE | CBRS_BOTTOM , m_Rect , this , 3 );//3为ID
        int nParts [ 4 ]= { 300 , 600 , 900 ,- 1 }; // 分割尺寸
        m_StatBar -> SetParts ( 4 , nParts ); // 分割状态栏
        m_StatBar -> SetText ( " 系统状态 " , 0 , 0 ); // 第一个分栏加入 " 这是第一个指示器 "
        m_StatBar -> SetText ( " 相机 1 状态 " , 1 , 0 ); // 以下类似
        m_StatBar -> SetText ( " 相机 2 状态 " , 2 , 0 ); // 以下类似
        m_StatBar -> ShowWindow ( SW_SHOW );

//
//可用
CStatusBarCtrl   m_StatusBar ;
//
m_StatusBar . Create ( WS_CHILD | WS_VISIBLE | SBT_OWNERDRAW , CRect ( 0 , 0 , 0 , 0 ), this , 0 );
        int strPartDim [ 3 ] = { 100 , 200 , - 1 }; // 分割数量
        m_StatusBar . SetParts ( 3 , strPartDim );
        // 设置状态栏文本
        m_StatusBar . SetText ( " 分栏一 " , 0 , 0 );
        m_StatusBar . SetText ( " 分栏二 " , 1 , 0 );
        m_StatusBar . SetText ( " 分栏三 " , 2 , 0 );
        // 下面是在状态栏中加入图标
        m_StatusBar . SetIcon ( 1 , SetIcon ( AfxGetApp ()-> LoadIcon ( IDR_MAINFRAME ), FALSE )); // 为第二个分栏中加的图标










 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值