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