分享方式:


CStatusBar 類別

具有一列文字輸出窗格或「指示器」的控制列。

語法

class CStatusBar : public CControlBar

成員

公用建構函式

名稱 描述
CStatusBar::CStatusBar 建構 CStatusBar 物件。

公用方法

名稱 描述
CStatusBar::CommandToIndex 取得指定指標標識碼的索引。
CStatusBar::Create 建立狀態列、將它附加至 CStatusBar 物件,並設定初始字型和列高度。
CStatusBar::CreateEx 建立 CStatusBar 具有內嵌 CStatusBarCtrl 物件之其他樣式的物件。
CStatusBar::D rawItem 當擁有者繪製狀態列控件的視覺層面變更時呼叫。
CStatusBar::GetItemID 取得指定索引的指標標識碼。
CStatusBar::GetItemRect 取得指定索引的顯示矩形。
CStatusBar::GetPaneInfo 取得指定索引的指標標識碼、樣式和寬度。
CStatusBar::GetPaneStyle 取得指定索引的指標樣式。
CStatusBar::GetPaneText 取得指定索引的指標文字。
CStatusBar::GetStatusBarCtrl 允許直接存取基礎通用控制件。
CStatusBar::SetIndicators 設定指標標識碼。
CStatusBar::SetPaneInfo 設定指定索引的指標標識碼、樣式和寬度。
CStatusBar::SetPaneStyle 設定指定索引的指標樣式。
CStatusBar::SetPaneText 設定指定索引的指標文字。

備註

輸出窗格通常用來做為消息行和狀態指標。 範例包括功能表說明訊息行,可簡短說明選取的功能表命令,以及顯示SCROLL LOCK、NUM LOCK 和其他索引鍵狀態的指標。

CStatusBar::GetStatusBarCtrl 是 MFC 4.0 新增的成員函式,可讓您利用 Windows 通用控件對狀態列自定義和其他功能的支援。 CStatusBar 成員函式提供 Windows 通用控制件的大部分功能;不過,當您呼叫 GetStatusBarCtrl時,您可以為您的狀態列提供更多 Windows 95/98 狀態列的特性。 當您呼叫 GetStatusBarCtrl時,它會傳回 對象的參考 CStatusBarCtrl 。 如需使用 Windows 通用控件設計工具列的詳細資訊,請參閱 CStatusBarCtrl 。 如需通用控件的詳細資訊,請參閱 Windows SDK 中的通用控件

架構會將指標資訊儲存在陣列中,最左邊的指標位於位置0。 當您建立狀態列時,您會使用架構與對應指標關聯的字串標識子陣列。 然後,您可以使用字元串標識碼或索引來存取指標。

根據預設,第一個指標為「彈性」:它會佔用其他指標窗格未使用的狀態欄長度,讓其他窗格靠右對齊。

若要建立狀態列,請遵循下列步驟:

  1. 建構 CStatusBar 物件。

  2. 呼叫 Create (或 CreateEx) 函式來建立狀態列視窗,並將它附加至 CStatusBar 物件。

  3. 呼叫 SetIndicators 以將字串標識碼與每個指標產生關聯。

有三種方式可以更新狀態列窗格中的文字:

  1. 呼叫 CWnd::SetWindowText ,只更新窗格 0 中的文字。

  2. 在狀態列的 ON_UPDATE_COMMAND_UI 處理程式中呼叫 CCmdUI::SetText

  3. 呼叫 SetPaneText 以更新任何窗格的文字。

呼叫 SetPaneStyle 以更新狀態列窗格的樣式。

如需使用 CStatusBar的詳細資訊,請參閱 MFC 中的狀態列實作和技術附註 31 :控制列一文。

繼承階層架構

CObject

CCmdTarget

CWnd

CControlBar

CStatusBar

需求

標頭: afxext.h

CStatusBar::CommandToIndex

取得指定標識碼的指標索引。

int CommandToIndex(UINT nIDFind) const;

參數

nIDFind
要擷取其索引之指標的字串標識碼。

傳回值

如果成功,則為指標的索引;-1 若未成功則為 。

備註

第一個指標的索引為 0。

CStatusBar::Create

建立狀態列(子視窗),並將它與 CStatusBar 對象產生關聯。

virtual BOOL Create(
    CWnd* pParentWnd,
    DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM,
    UINT nID = AFX_IDW_STATUS_BAR);

參數

pParentWnd
CWnd 物件的指標,其 Windows 視窗是狀態列的父代。

dwStyle
狀態欄樣式。 除了標準 Windows 樣式之外,也支持這些樣式。

  • CBRS_TOP控制列位於框架視窗頂端。

  • CBRS_BOTTOM控制列位於框架視窗底部。

  • CBRS_NOALIGN當父項重設大小時,不會重新定位控制列。

nID
工具列的子視窗識別碼。

傳回值

如果成功則為非零;否則為 0。

備註

同時設定初始字型,並將狀態列的高度設定為預設值。

CStatusBar::CreateEx

呼叫此函式以建立狀態列(子視窗),並將它與 CStatusBar 對象產生關聯。

virtual BOOL CreateEx(
    CWnd* pParentWnd,
    DWORD dwCtrlStyle = 0,
    DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM,
    UINT nID = AFX_IDW_STATUS_BAR);

參數

pParentWnd
CWnd 物件的指標,其 Windows 視窗是狀態列的父代。

dwCtrlStyle
建立內嵌 CStatusBarCtrl 物件的其他樣式。 默認值會指定狀態列,而不需重設大小底框或工具提示支援。 支援的狀態列樣式如下:

  • SBARS_SIZEGRIP狀態列控件包含狀態列右端的重設大小控點。 調整大小的底框類似縮放框線;它是使用者可以按一下並拖曳調整父視窗大小的矩形區域。

  • SBT_TOOLTIPS狀態列支援工具提示。

如需這些樣式的詳細資訊,請參閱 CStatusBarCtrl 的設定。

dwStyle
狀態欄樣式。 預設值會指定在框架視窗底部建立可見的狀態列。 套用窗口樣式和 CDialogBar::Create 中列出的狀態列控件樣式的任何組合。 不過,此參數應該一律包含WS_CHILD和WS_VISIBLE樣式。

nID
狀態列的子視窗識別碼。

傳回值

如果成功則為非零;否則為 0。

備註

此函式也會設定初始字型,並將狀態列的高度設定為預設值。

CreateEx建立內嵌狀態列控件時,請使用 ,而不是 建立特定樣式。 例如,將 dwCtrlStyle 設定為 SBT_TOOLTIPS,以在狀態欄物件中顯示工具提示。

CStatusBar::CStatusBar

CStatusBar建構 物件、視需要建立默認狀態列字型,並將字型特性設定為預設值。

CStatusBar();

CStatusBar::D rawItem

當擁有者繪製狀態列的視覺層面變更時,架構會呼叫此成員函式。

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

參數

lpDrawItemStruct
DRAWITEMSTRUCT 結構的指標,其中包含所需繪圖類型的相關信息。

備註

結構 itemAction 的成員 DRAWITEMSTRUCT 會定義要執行的繪圖動作。 覆寫這個成員函式,以實作擁有者繪製對象的繪圖 CStatusBar 。 應用程式應該在終止此成員函式之前,還原針對 lpDrawItemStruct提供的顯示內容選取的所有圖形裝置介面 (GDI) 物件。

CStatusBar::GetItemID

傳回 nIndex指定指標的標識碼。

UINT GetItemID(int nIndex) const;

參數

nIndex
要擷取其標識碼的指標索引。

傳回值

nIndex指定指標的標識碼。

CStatusBar::GetItemRect

將 nIndex指定指標的座標複製到 lpRect指向的結構中。

void GetItemRect(
    int nIndex,
    LPRECT lpRect) const;

參數

nIndex
要擷取其矩形座標的指標索引。

lpRect
指向 RECT 結構或 CRect 物件,該物件將接收 nIndex指定指標的座標。

備註

座標會以像素為單位,相對於狀態列左上角。

CStatusBar::GetPaneInfo

將 nIDnStylecxWidth 設定為 nIndex指定位置之指標窗格的標識碼、樣式和寬度。

void GetPaneInfo(
    int nIndex,
    UINT& nID,
    UINT& nStyle,
    int& cxWidth) const;

參數

nIndex
要擷取其資訊的窗格索引。

nID
設定為窗格標識碼的UINT參考。

nStyle
設定為窗格樣式的UINT參考。

cxWidth
設定為窗格寬度的整數參考。

CStatusBar::GetPaneStyle

呼叫這個成員函式以擷取狀態列窗格的樣式。

UINT GetPaneStyle(int nIndex) const;

參數

nIndex
要擷取其樣式的窗格索引。

傳回值

nIndex指定狀態列窗格的樣式。

備註

窗格的樣式會決定窗格的顯示方式。

如需狀態列可用的樣式清單,請參閱 建立

CStatusBar::GetPaneText

呼叫這個成員函式,以擷取出現在狀態列窗格中的文字。

CString GetPaneText(int nIndex) const;  void GetPaneText(int nIndex, CString& rString) const;

參數

nIndex
要擷取其文字的窗格索引。

rString
CString 對象的參考,其中包含要擷取的文字。

傳回值

CString物件,包含窗格的文字。

備註

這個成員函式的第二種 CString 形式會以字串文字填滿 物件。

CStatusBar::GetStatusBarCtrl

此成員函式允許直接存取基礎通用控制件。

CStatusBarCtrl& GetStatusBarCtrl() const;

傳回值

包含 CStatusBarCtrl 物件的參考

備註

使用 GetStatusBarCtrl 來利用 Windows 狀態列通用控件的功能,並利用 CStatusBarCtrl 提供的狀態列自定義支援。 例如,藉由使用一般控件,您可以指定包含狀態列重設大小控點的樣式,也可以指定樣式讓狀態列出現在父視窗工作區的頂端。

如需通用控件的詳細資訊,請參閱 Windows SDK 中的通用控件

CStatusBar::SetIndicators

將每個指標的標識元設定為數位 lpIDArray 對應專案所指定的值、載入每個識別碼所指定的字串資源,並將指標的文字設定為字串。

BOOL SetIndicators(
    const UINT* lpIDArray,
    int nIDCount);

參數

lpIDArray
標識子陣列的指標。

nIDCount
lpIDArray 所指向陣列中的元素數目。

傳回值

如果成功則為非零;否則為 0。

CStatusBar::SetPaneInfo

將指定的指標窗格設定為新的標識碼、樣式和寬度。

void SetPaneInfo(
    int nIndex,
    UINT nID,
    UINT nStyle,
    int cxWidth);

參數

nIndex
要設定其樣式的指標窗格索引。

nID
指標窗格的新標識碼。

nStyle
指標窗格的新樣式。

cxWidth
指標窗格的新寬度。

備註

支援下列指標樣式:

  • SBPS_NOBORDERS窗格周圍沒有 3D 框線。

  • SBPS_POPOUT反向框線,讓文字「彈出」。

  • SBPS_DISABLED不要繪製文字。

  • SBPS_STRETCH Stretch 窗格以填滿未使用的空間。 每個狀態列只能有一個窗格可以有此樣式。

  • SBPS_NORMAL沒有延展、框線或快顯。

CStatusBar::SetPaneStyle

呼叫這個成員函式,以設定狀態列窗格的樣式。

void SetPaneStyle(
    int nIndex,
    UINT nStyle);

參數

nIndex
要設定其樣式的窗格索引。

nStyle
要設定其樣式的窗格樣式。

備註

窗格的樣式會決定窗格的顯示方式。

如需狀態列可用的樣式清單,請參閱 SetPaneInfo

CStatusBar::SetPaneText

呼叫這個成員函式,將窗格文字設定為 lpszNewText指向的字串。

BOOL SetPaneText(
    int nIndex,
    LPCTSTR lpszNewText,
    BOOL bUpdate = TRUE);

參數

nIndex
要設定其文字的窗格索引。

lpszNewText
新窗格文字的指標。

bUpdate
如果為TRUE,在設定文字之後,窗格就會失效。

傳回值

如果成功則為非零;否則為 0。

備註

呼叫 SetPaneText之後,您必須新增UI更新處理程式,才能在狀態列中顯示新的文字。

範例

//Sets and displays text for pane index 3 and id ID_INDICATOR_SCRL
m_wndStatusBar.SetPaneText(3, _T("My New Status Bar Text"), TRUE);

 

//UI handler in the message map updates the status bar text:
ON_UPDATE_COMMAND_UI(ID_INDICATOR_SCRL, &CMainFrame::OnUpdatePane)

 

void CMainFrame::OnUpdatePane(CCmdUI* pCmdUI)
{
   pCmdUI->Enable();
}

另請參閱

MFC 範例 CTRLBARS
MFC 範例DLGCBR32
CControlBar Class
階層架構圖表
CStatusBarCtrl 類別
CControlBar Class