複製鏈接
請複製以下鏈接發送給好友

CStatusBarCtrl

鎖定
CStatusBarCtrl是一個“狀態條控件”是一個水平的窗口,通常顯示在一個父窗口的底部,在其中應用程序可以顯示不同類型的狀態信息。
中文名
CStatusBarCtrl
類    型
狀態條控件
參見 
Visual C++
提    供
Windows通用狀態條控件的性能

CStatusBarCtrl模塊細數

繼承圖表 繼承圖表 [1]
可以將此狀態條控件分割為多個部分,用來顯示多種類型的信息。
CStatusBarCtrl類提供了Windows通用狀態條控件的性能。這個控件(也就是CStatusBarCtrl類)只對運行在Windows 95和Windows NT3.51或更新版本下的程序來説是可用的。
有關使用CStatusBarCtrl的更多信息,參見“Visual C++程序員指南”中的“控件主題”和“使用CStatusBarCtrl”。
#include <afxcmn.h>
請參閲:CToolBarCtrl

CStatusBarCtrl類成員

CStatusBarCtrl構造函數

CStatusBarCtrl() 構造一個CStatusBarCtrl對象。
Create() 創建狀態條,並將它與CStatusBarCtrl對象連接。

CStatusBarCtrl屬性

SetText() 設置一個狀態條控件的給定部分中的文本。
GetText() 從一個狀態條控件的給定部分中獲取文本。
GetTextLength() 從一個狀態條控件的給定部分獲取文本的字符的長度。
SetParts() 設置一個狀態條控件中的一部分和每部分右邊的座標。
GetParts() 獲取一個狀態條控件中的部分區域的數目。
GetBorders() 獲取一個狀態條控件的水平或垂直邊界的對齊寬度。
SetMinHeight() 設置一個狀態條控件的繪製區域的最小高度。
SetSimple() 指定一個狀態條是顯示簡單的文本,還是顯示前一次調用。
SetParts()設置的所有控件部分。
GetRect() 獲取狀態條控件中的一部分的邊界矩形的尺寸。
IsSimple() 檢查狀態條窗口來確定它是否處於簡單模式。
GetTipText() 獲取狀態條中的一個窗格的工具提示文本。
SetTipText() 設置狀態條中的一個窗格的工具提示文本
SetBkColor() 設置一個狀態條控件的背景顏色。
SetIcon() 設置狀態條控件中的窗格的圖表。

CStatusBarCtrl可重載

DrawItem() 自主繪製一個狀態條控件的外觀。

CStatusBarCtrl添加狀態欄

CStatusBarCtrl方法一

1.添加成員變量CStatusBarCtrl m_StatusBar;
2.在OnInitDialog()中加入:
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));//為第二個分欄中加的圖標

CStatusBarCtrl方法二

1.添加成員變量CStatusBar m_wndStatusBar;
2.在OnInitDialog()中加入:
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CAPS, //CAP lock indicator.
ID_INDICATOR_NUM, //NUM lock indicator.
ID_INDICATOR_SCRL, //SCRL lock indicator.
};
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status barn");
return -1; // fail to create
}
UINT nID; //控制狀態欄裏面的分欄
m_wndStatusBar.SetPaneInfo(0,nID,SBPS_STRETCH|SBPS_NOBORDERS,100);//返回值存nID中
m_wndStatusBar.SetPaneText(0,"就緒");
m_wndStatusBar.SetPaneInfo(1,nID,SBPS_NORMAL,100);
m_wndStatusBar.SetPaneText(1,"大寫");
m_wndStatusBar.SetPaneInfo(2,nID,SBPS_POPOUT,100);
m_wndStatusBar.SetPaneText(2,"數字");
SetPaneInfo()函數的第三個參數的可選項如下:
// SBPS_NOBORDERS No 3-D border around the pane.
// SBPS_POPOUT Reverse border so that text "pops out."
// SBPS_DISABLED Do not draw text.
// SBPS_STRETCH Stretch pane to fill unused space. Only one pane per status bar can have this style.
// SBPS_NORMAL No stretch, borders, or pop-out.
//----------------讓這個狀態欄最終顯示在對話框中-------------
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
參考資料