|
VC++的MFC中添加底部状态栏,分别使用CStatusBar和CStatusBarCtrl,示例代码如下:
CStatusBar:
- //常用
- 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();
- ///
复制代码 CStatusBarCtrl:
- //可用
- // 系统头文件
- //实例化状态栏类
- 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 )); // 为第二个分栏中加的图标
复制代码
|
|