CStatusBar Class

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

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

class CStatusBar : public CControlBar  

公用建構函式

名稱說明
CStatusBar::CStatusBar建構 CStatusBar 物件。

公用方法

名稱說明
CStatusBar::CommandToIndex取得索引的指定的指標識別碼。
CStatusBar::Create建立狀態列,附加至該CStatusBar物件,並設定初始字型和列的高度。
CStatusBar::CreateEx建立CStatusBar具有其他樣式的內嵌物件CStatusBarCtrl物件。
CStatusBar::DrawItem主控描繪狀態列控制項會變更的視覺外觀時呼叫。
CStatusBar::GetItemID取得指定索引的指標識別碼。
CStatusBar::GetItemRect取得顯示給定索引的矩形。
CStatusBar::GetPaneInfo取得指定索引的指標識別碼、 樣式和寬度。
CStatusBar::GetPaneStyle取得指定索引的指標樣式。
CStatusBar::GetPaneText取得指定索引的指標文字。
CStatusBar::GetStatusBarCtrl允許直接存取基礎的通用控制項。
CStatusBar::SetIndicators設定指標識別碼。
CStatusBar::SetPaneInfo設定指標 ID、 樣式和特定索引的寬度。
CStatusBar::SetPaneStyle設定給定索引的指標樣式。
CStatusBar::SetPaneText設定給定索引的標記文字。

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

CStatusBar::GetStatusBarCtrl,成員函式新增到 MFC 4.0 可讓您利用狀態列上的自訂及其他功能的 Windows 通用控制項的支援。 CStatusBar成員函式可讓您大部分的 Windows 通用控制項; 的功能但是,當您呼叫GetStatusBarCtrl,您可以授與您狀態列甚至多個 Windows 95/98 狀態列的特性。 當您呼叫GetStatusBarCtrl,它會傳回參考CStatusBarCtrl物件。 請參閱CStatusBarCtrl如需有關設計 Windows 通用控制項的工具列。 關於通用控制項的一般資訊,請參閱通用控制項中Windows SDK。

架構會標記資訊儲存至位置 0 的最左邊指標的陣列。 當您建立狀態列時,您會使用字串 Id,架構會將具有對應的指標的陣列。 您接著可以使用字串識別碼或索引來存取指標。

根據預設,第一個指標是 「 彈性 」: 它會佔用狀態列長度不供其他指標窗格,使其他窗格靠右對齊。

若要建立狀態列,請依照下列步驟執行︰

  1. 建構 CStatusBar 物件。

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

  3. 呼叫SetIndicators與每一個指標相關聯的字串識別碼。

有三種方式來更新狀態列窗格中的文字︰

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

  2. 呼叫CCmdUI::SetText在狀態列上ON_UPDATE_COMMAND_UI處理常式。

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

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

如需有關使用CStatusBar,請參閱文章MFC 中的狀態列實作技術提示 31︰ 控制列

CObject

CCmdTarget

CWnd

CControlBar

CStatusBar

標頭︰ afxext.h

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

int CommandToIndex(UINT nIDFind) const;  

參數

nIDFind
指標的索引是要擷取的字串識別碼。

傳回值

指標成功; 如果索引如果不成功,傳回 –&1;。

備註

第一個指標的索引為 0。

建立狀態列 (子視窗),並將它與相關聯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物件。

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,而不是建立,當特定樣式必須要有內嵌的狀態列控制項的建立期間。 例如,設定dwCtrlStyleSBT_TOOLTIPS狀態列物件中顯示工具提示。

建構CStatusBar物件,會建立預設狀態列字型有必要,並設定成預設值的字型特性。

CStatusBar();

此成員函式會呼叫架構中,當主控描繪狀態列會變更的視覺外觀。

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

參數

lpDrawItemStruct
指標DRAWITEMSTRUCT結構,其中包含所需的繪圖的類型資訊。

備註

ItemAction成員DRAWITEMSTRUCT結構會定義要執行的繪圖動作。 覆寫此成員函式實作繪圖的主控描繪CStatusBar物件。 應用程式應該還原選取的顯示內容中提供所有的圖形裝置介面 (GDI) 物件lpDrawItemStruct之前終止此成員函式。

傳回所指定的標記識別碼nIndex

UINT GetItemID(int nIndex) const;  

參數

nIndex
指標的 ID 是要擷取的索引。

傳回值

指標所指定的識別碼nIndex

複製所指定指標的座標nIndex成指向結構lpRect

void GetItemRect(
    int nIndex,  
    LPRECT lpRect) const;  

參數

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

lpRect
指向RECT結構或CRect物件,將會收到指定指標的座標nIndex

備註

座標是相對於左上角的 [狀態] 列的像素為單位。

設定nIDnStyle,和cxWidth以 ID、 樣式和寬度所指定的位置 [指標] 窗格的nIndex

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

參數

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

nID
若要參考UINT設窗格的識別碼。

nStyle
若要參考UINT設窗格的樣式。

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

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

UINT GetPaneStyle(int nIndex) const;  

參數

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

傳回值

[狀態列] 窗格中所指定的樣式nIndex

備註

窗格的樣式會決定如何顯示 窗格。

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

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

CString GetPaneText(int nIndex) const;  void GetPaneText(int nIndex, CString& rString) const;  ```  
  
### Parameters  
 `nIndex`  
 Index of the pane whose text is to be retrieved.  
  
 `rString`  
 A reference to a [CString](../Topic/CStringT%20Class.md) object that contains the text to be retrieved.  
  
### Return Value  
 A `CString` object containing the pane's text.  
  
### Remarks  
 The second form of this member function fills a `CString` object with the string text.  
  
##  <a name="cstatusbar__getstatusbarctrl"></a>  CStatusBar::GetStatusBarCtrl  
 This member function allows direct access to the underlying common control.  
  

CStatusBarCtrl i GetStatusBarCtrl() const;

  
### Return Value  
 Contains a reference to a [CStatusBarCtrl](../Topic/CStatusBarCtrl%20Class.md) object.  
  
### Remarks  
 Use `GetStatusBarCtrl` to take advantage of the functionality of the Windows status-bar common control, and to take advantage of the support [CStatusBarCtrl](../Topic/CStatusBarCtrl%20Class.md) provides for status-bar customization. For example, by using the common control, you can specify a style that includes a sizing grip on the status bar, or you can specify a style to have the status bar appear at the top of the parent window's client area.  
  
 For more general information about common controls, See [Common Controls](http://msdn.microsoft.com/library/windows/desktop/bb775493) in the [!INCLUDE[winSDK](../Token/winSDK_md.md)].  
  
##  <a name="cstatusbar__setindicators"></a>  CStatusBar::SetIndicators  
 Sets each indicator's ID to the value specified by the corresponding element of the array `lpIDArray`, loads the string resource specified by each ID, and sets the indicator's text to the string.  
  

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

  
### Parameters  
 `lpIDArray`  
 Pointer to an array of IDs.  
  
 `nIDCount`  
 Number of elements in the array pointed to by `lpIDArray`.  
  
### Return Value  
 Nonzero if successful; otherwise 0.  
  
##  <a name="cstatusbar__setpaneinfo"></a>  CStatusBar::SetPaneInfo  
 Sets the specified indicator pane to a new ID, style, and width.  
  

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

  
### Parameters  
 `nIndex`  
 Index of the indicator pane whose style is to be set.  
  
 `nID`  
 New ID for the indicator pane.  
  
 `nStyle`  
 New style for the indicator pane.  
  
 `cxWidth`  
 New width for the indicator pane.  
  
### Remarks  
 The following indicator styles are supported:  
  
- **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.  
  
##  <a name="cstatusbar__setpanestyle"></a>  CStatusBar::SetPaneStyle  
 Call this member function to set the style of a status bar's pane.  
  

void SetPaneStyle (int nIndex,
UINT nStyle);

  
### Parameters  
 `nIndex`  
 Index of the pane whose style is to be set.  
  
 `nStyle`  
 Style of the pane whose style is to be set.  
  
### Remarks  
 A pane's style determines how the pane appears.  
  
 For a list of styles available for status bars, see [SetPaneInfo](#cstatusbar__setpaneinfo).  
  
##  <a name="cstatusbar__setpanetext"></a>  CStatusBar::SetPaneText  
 Call this member function to set the pane text to the string pointed to by `lpszNewText`.  
  

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

  
### Parameters  
 `nIndex`  
 Index of the pane whose text is to be set.  
  
 `lpszNewText`  
 Pointer to the new pane text.  
  
 *bUpdate*  
 If **TRUE**, the pane is invalidated after the text is set.  
  
### Return Value  
 Nonzero if successful; otherwise 0.  
  
### Remarks  
 After you call `SetPaneText`, you must add a UI update handler to display the new text in the status bar.  
  
### Example  
 [!CODE [NVC_MFCDocView#176](../CodeSnippet/VS_Snippets_Cpp/NVC_MFCDocView#176)]  
  
 [!CODE [NVC_MFCDocView#177](../CodeSnippet/VS_Snippets_Cpp/NVC_MFCDocView#177)]  
  
 [!CODE [NVC_MFCDocView#178](../CodeSnippet/VS_Snippets_Cpp/NVC_MFCDocView#178)]  
  
## See Also  
 [MFC Sample CTRLBARS](../Topic/Visual%20C++%20Samples.md)   
 [MFC Sample DLGCBR32](../Topic/Visual%20C++%20Samples.md)   
 [CControlBar Class](../Topic/CControlBar%20Class.md)   
 [Hierarchy Chart](../Topic/Hierarchy%20Chart.md)   
 [CStatusBarCtrl Class](../Topic/CStatusBarCtrl%20Class.md)   
 [CControlBar Class](../Topic/CControlBar%20Class.md)





顯示: