//常用
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 )); // 为第二个分栏中加的图标