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。 當您建立狀態列時,您會使用架構與對應指標關聯的字串識別碼陣列。 然後,您可以使用字串識別碼或索引來存取指標。
根據預設,第一個指標為「彈性」:它會佔用其他指標窗格未使用的狀態列長度,讓其他窗格靠右對齊。
若要建立狀態列,請遵循下列步驟:
建構
CStatusBar
物件。呼叫 Create (或 CreateEx ) 函式來建立狀態列視窗,並將它附加至
CStatusBar
物件。呼叫 SetIndicators 以將字串識別碼與每個指標產生關聯。
有三種方式可以更新狀態列窗格中的文字:
呼叫 CWnd::SetWindowText ,只更新窗格 0 中的文字。
在狀態列的 ON_UPDATE_COMMAND_UI 處理常式中呼叫 CCmdUI::SetText 。
呼叫 SetPaneText 以更新任何窗格的文字。
呼叫 SetPaneStyle 以更新狀態列窗格的樣式。
如需使用 CStatusBar
的詳細資訊,請參閱 MFC 中的狀態列實作和 技術附注 31 :控制列 一文 。
繼承階層架構
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
將 nID 、 nStyle 和 cxWidth 設定 為 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
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應