共用方式為


CMFCStatusBar 類別

類別 CMFCStatusBar 會實作類似 CStatusBar 類別的狀態列。 不過, CMFCStatusBar 類別具有 CStatusBar 類別所未提供的功能,例如能夠顯示影像、動畫和進度列,而且能夠回應滑鼠按兩下。

如需更多詳細資料,請參閱 Visual Studio 安裝位置下之 VC\atlmfc\src\mfc 資料夾中的原始程式碼。

語法

class CMFCStatusBar : public CPane

成員

公用方法

名稱 描述
CMFCStatusBar::CalcFixedLayout (覆寫 CBasePane::CalcFixedLayout.)
CMFCStatusBar::CommandToIndex
CMFCStatusBar::Create 建立控件列,並將它附加至 CPane 物件。 (覆寫 CPane::Create.)
CMFCStatusBar::CreateEx 建立控件列,並將它附加至 CPane 物件。 (覆寫 CPane::CreateEx.)
CMFCStatusBar::D oesAllowDynInsertBefore 判斷是否可以在此窗格與父框架之間動態插入另一個窗格。 (覆寫 CBasePane::D oesAllowDynInsertBefore.)
CMFCStatusBar::EnablePaneDoubleClick 啟用或停用在狀態列上按兩下滑鼠的處理。
CMFCStatusBar::EnablePaneProgressBar 在指定的窗格上顯示進度列。
CMFCStatusBar::GetCount 傳回狀態列上的窗格數目。
CMFCStatusBar::GetDrawExtendedArea
CMFCStatusBar::GetExtendedArea
CMFCStatusBar::GetItemID
CMFCStatusBar::GetItemRect
CMFCStatusBar::GetPaneInfo
CMFCStatusBar::GetPaneProgress
CMFCStatusBar::GetPaneStyle 傳回窗格樣式。 (覆寫 CBasePane::GetPaneStyle.)
CMFCStatusBar::GetPaneText
CMFCStatusBar::GetPaneWidth 傳回狀態列指定窗格的寬度,以像素為單位。
CMFCStatusBar::GetTipText 傳回狀態列指定窗格的工具提示文字。
CMFCStatusBar::InvalidatePaneContent 使指定的窗格失效,並重新繪製其內容。
CMFCStatusBar::P reCreateWindow 在建立附加至這個 CWnd 物件的 Windows 視窗之前,由架構呼叫。 (覆寫 CWnd::P reCreateWindow.)
CMFCStatusBar::SetDrawExtendedArea
CMFCStatusBar::SetIndicators
CMFCStatusBar::SetPaneAnimation 將動畫指派給指定的窗格。
CMFCStatusBar::SetPaneBackgroundColor 設定狀態列指定窗格的背景色彩。
CMFCStatusBar::SetPaneIcon 設定狀態列指定窗格的指標圖示。
CMFCStatusBar::SetPaneInfo
CMFCStatusBar::SetPaneProgress 為狀態列的指定窗格設定進度列的目前進度。
CMFCStatusBar::SetPaneStyle 設定窗格的樣式。 (覆寫 CBasePane::SetPaneStyle.)
CMFCStatusBar::SetPaneText
CMFCStatusBar::SetPaneTextColor 設定狀態列指定窗格的文字色彩。
CMFCStatusBar::SetPaneWidth 以像素為單位設定狀態列指定窗格的寬度。
CMFCStatusBar::SetTipText 設定狀態列指定窗格的工具提示文字。

受保護的方法

名稱 描述
CMFCStatusBar::OnDrawPane 當架構重新繪製狀態列窗格時,由架構呼叫。

備註

下圖顯示狀態 列示範範例 應用程式的狀態列圖。

CMFCStatusBar 的範例。

範例

下列範例示範應用程式用來呼叫 類別中各種方法的 CMFCStatusBar 局部變數。 這些變數會在 StatusBarDemoView.h 中宣告。 主框架是在 MainFrm.h 中宣告,檔會在 StatusBarDemoDoc.h 中宣告,而檢視會在 StatusBarDemoView.h 中宣告。 此代碼段是狀態列示範範例一部分。

int m_nProgressCurr;
BOOL m_bInProgress;

CImageList m_imlStatusAnimation;
BOOL m_bInAnimation;

CBitmap m_bmpIcon1;
CBitmap m_bmpIcon2;

下列範例示範如何在 MainFrm.h 中引進 GetStatusBar 方法,然後從 GetStatusBar StatusBarDemoView.h 中的 方法呼叫此方法,以取得對象的參考CMFCStatusBar。 此代碼段是狀態列示範範例一部分。

// in MainFrm.h
public:
CMFCStatusBar &GetStatusBar()
{
   return m_wndStatusBar;
}
// in StatusBarDemoView.h
CMFCStatusBar &GetStatusBar() const
{
   return ((CMainFrame *)AfxGetMainWnd())->GetStatusBar();
}

下列範例示範如何在 StatusBarDemoView.cpp 中 CMFCStatusBar 呼叫 類別中的各種方法。 常數會在 MainFrm.h 中宣告。 此範例示範如何設定圖示、設定狀態列窗格的工具提示文字、在指定的窗格上顯示進度列、將動畫指派給指定的窗格、設定狀態欄窗格的文字和寬度,以及為狀態欄窗格設定進度列的目前進度指示器。 此代碼段是狀態列示範範例一部分。

// in MainFrm.h
const int nStatusIcon = 0;
const int nStatusInfo = 1;
const int nStatusProgress = 2;
const int nStatusLabel = 3;
const int nStatusAnimation = 4;
// in StatusBarDemoView.cpp
GetStatusBar().SetPaneIcon(nStatusIcon, m_bmpIcon1);
GetStatusBar().SetTipText(nStatusIcon, _T("This is a tooltip"));
GetStatusBar().EnablePaneProgressBar(nStatusProgress, PROGRESS_MAX);
GetStatusBar().SetPaneAnimation(nStatusAnimation, NULL);
GetStatusBar().SetPaneAnimation(nStatusAnimation, m_imlStatusAnimation);
GetStatusBar().SetPaneText(nStatusAnimation, _T(""));
GetStatusBar().SetPaneWidth(nStatusAnimation, 16);
GetStatusBar().SetPaneProgress(nStatusProgress, m_nProgressCurr);

繼承階層架構

CObject

CCmdTarget

CWnd

CBasePane

CPane

CMFCStatusBar

需求

標頭: afxstatusbar.h

CMFCStatusBar::CalcFixedLayout

virtual CSize CalcFixedLayout(
    BOOL bStretch,
    BOOL bHorz);

參數

[in] bStretch
[in] bHorz

傳回值

備註

CMFCStatusBar::CommandToIndex

int CommandToIndex(UINT nIDFind) const;

參數

[in] nIDFind

傳回值

備註

CMFCStatusBar::Create

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

參數

[in] pParentWnd
[in] dwStyle
[in] nID

傳回值

備註

CMFCStatusBar::CreateEx

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

參數

[in] pParentWnd
[in] dwCtrlStyle
[in] dwStyle
[in] nID

傳回值

備註

CMFCStatusBar::D oesAllowDynInsertBefore

virtual BOOL DoesAllowDynInsertBefore() const;

傳回值

備註

CMFCStatusBar::EnablePaneDoubleClick

啟用或停用在狀態列上按兩下滑鼠的處理。

void EnablePaneDoubleClick(BOOL bEnable=TRUE);

參數

bEnable
[in]如果為 TRUE,請啟用滑鼠按兩下的處理。 否則,請停用滑鼠按兩下的處理。

備註

如果啟用狀態列來處理按兩下,Windows 會在每次使用者按兩下狀態列窗格時,將WM_COMMAND通知連同資源識別碼一起傳送給狀態列的擁有者。

CMFCStatusBar::EnablePaneProgressBar

在指定的窗格上顯示進度列。

void EnablePaneProgressBar(
    int nIndex,
    long nTotal=100,
    BOOL bDisplayText=FALSE,
    COLORREF clrBar=-1,
    COLORREF clrBarDest=-1,
    COLORREF clrProgressText=-1);

參數

nIndex
[in]指定要啟用其進度列之窗格的索引。

nTotal
[in]指定進度列的最大值。

bDisplayText
[in]指定進度列是否應該顯示目前的進度值。

clrBar
[in]指定進度列的背景色彩。

clrBarDest
[in]指定進度列背景的次要色彩。 使用與 clrBar 不同的值,以混合至漸層的色彩填滿。

clrProgressText
[in]指定進度列文字的色彩。

備註

如果您想要停用進度列呼叫 EnablePaneProgressBar ,且 nTotal 設定為 -1。 根據預設 ,nTotal 會設定為 100。 因此,您不需要任何其他計算,即可將進度顯示為百分比。

您應該為 clrBar 和 clrBarDest 傳遞不同的值,讓進度列的背景色彩顯示混合在漸層中的色彩。 .

若要設定目前的進度,請呼叫 CMFCStatusBar::SetPaneProgress 方法。

CMFCStatusBar::GetCount

擷取狀態列中的窗格數目。

int GetCount() const;

傳回值

狀態列中的窗格數目。

CMFCStatusBar::GetDrawExtendedArea

BOOL GetDrawExtendedArea() const;

傳回值

備註

CMFCStatusBar::GetExtendedArea

virtual BOOL GetExtendedArea(CRect& rect) const;

參數

[in] rect

傳回值

備註

CMFCStatusBar::GetItemID

UINT GetItemID(int nIndex) const;

參數

[in] nIndex

傳回值

備註

CMFCStatusBar::GetItemRect

void GetItemRect(
    int nIndex,
    LPRECT lpRect) const;

參數

[in] nIndex
[in] lpRect

備註

CMFCStatusBar::GetPaneInfo

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

參數

[in] nIndex
[in] nID
[in] nStyle
[in] cxWidth

備註

CMFCStatusBar::GetPaneProgress

long GetPaneProgress(int nIndex) const;

參數

[in] nIndex

傳回值

備註

CMFCStatusBar::GetPaneStyle

UINT GetPaneStyle(int nIndex) const;

參數

[in] nIndex

傳回值

備註

CMFCStatusBar::GetPaneText

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

CString GetPaneText(int nIndex) const;

參數

[in] nIndex
[in] s

傳回值

備註

CMFCStatusBar::GetPaneWidth

擷取狀態列窗格的寬度。

int GetPaneWidth(int nIndex) const;

參數

nIndex
[in]指定狀態列窗格的索引。

傳回值

nIndex 所指定狀態列窗格的寬度;否則,如果狀態欄窗格不存在,則為零。

CMFCStatusBar::GetTipText

擷取狀態列窗格的工具提示文字。

CString GetTipText(int nIndex) const;

參數

nIndex
[in]指定要擷取工具提示文字之窗格的索引。

傳回值

nIndex 所指定狀態列窗格的工具提示文字。 否則,如果指定的 nIndex 或其工具提示文字空白,則為空字串。

CMFCStatusBar::InvalidatePaneContent

使狀態列窗格失效,並重新繪製其內容。

void InvalidatePaneContent(int nIndex);

參數

nIndex
[in]指定要使內容失效並重新繪製之窗格的索引。

備註

當狀態列失效時,系統會將其標示為重新繪製。 當方法將WM_PAINT訊息傳送至 OnPaint 方法時UpdateWindow,Windows 會重新繪製它。

CMFCStatusBar::OnDrawPane

重新繪製狀態列的窗格。

virtual void OnDrawPane(
    CDC* pDC,
    CMFCStatusBarPaneInfo* pPane);

參數

pDC
[in]用於繪製之裝置內容的指標。

pPane
[in]結構的指標 CMFCStatusBarPaneInfo ,其中包含要重新繪製之窗格的相關信息。

備註

根據預設,根據窗格的樣式和內容, OnDrawPane 使用裝置內容 pDC 來重新繪製窗格。

覆寫衍生類別中的 CMFCStatusBar這個方法,以自定義窗格的外觀。

CMFCStatusBar::P reCreateWindow

virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

參數

[in] cs

傳回值

備註

CMFCStatusBar::SetDrawExtendedArea

void SetDrawExtendedArea(BOOL bSet = TRUE);

參數

[in] bSet

備註

CMFCStatusBar::SetIndicators

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

參數

[in] lpIDArray
[in] nIDCount

傳回值

備註

CMFCStatusBar::SetPaneAnimation

將動畫指派給指定的窗格。

void SetPaneAnimation(
    int nIndex,
    HIMAGELIST hImageList,
    UINT nFrameRate=500,
    BOOL bUpdate=TRUE);

參數

nIndex
[in]指定要為其指派動畫之窗格的索引。

hImageList
[in]指定保存動畫畫面的影像清單句柄。

nFrameRate
[in]指定動畫的幀速率,以毫秒為單位。

bUpdate
[in]如果為 TRUE,請立即更新窗格內容。 否則,窗格內容會在失效時更新。

備註

如果您要停用目前的動畫,請使用 設定為 NULL 呼叫 SetPaneAnimation hImageList

CMFCStatusBar::SetPaneBackgroundColor

設定狀態列窗格的背景色彩。

void SetPaneBackgroundColor(
    int nIndex,
    COLORREF clrBackground=(COLORREF)-1,
    BOOL bUpdate=TRUE);

參數

nIndex
[in]指定要設定新背景色彩之窗格的索引。

clrBackground
[in] 指定新的背景色彩。

bUpdate
[in]如果為 TRUE,請立即更新窗格內容。 否則,除非窗格因其他方法失效,否則請勿更新窗格內容。

CMFCStatusBar::SetPaneIcon

設定狀態列窗格的圖示。

void SetPaneIcon(
    int nIndex,
    HICON hIcon,
    BOOL bUpdate=TRUE);

void SetPaneIcon(
    int nIndex,
    HBITMAP hBmp,
    COLORREF clrTransparent=RGB(255, 0, 255),
    BOOL bUpdate=TRUE);

參數

nIndex
[in]指定要設定影像之窗格的索引。

hIcon
[in]指定要設定為窗格影像之圖示的句柄。

bUpdate
[in]指定是否要立即更新窗格內容。

hBmp
[in]指定要設定為窗格影像之點陣圖的句柄。

clrTransparent
[in]指定 hBmp 所指出之點陣圖的透明色彩。

備註

您可以將 HICON 或 HBITMAP 與透明色彩一起傳遞,以設定窗格的影像。 如果您不想再顯示影像,請將 NULL 值當做影像句柄傳遞。

如果 CMFCStatusBar::SetPaneAnimation 已設定任何執行中的動畫,動畫將會停止。

CMFCStatusBar::SetPaneInfo

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

參數

[in] nIndex
[in] nID
[in] nStyle
[in] cxWidth

備註

CMFCStatusBar::SetPaneProgress

為指定的窗格設定進度列的目前進度指示器。

void SetPaneProgress(
    int nIndex,
    long nCurr,
    BOOL bUpdate=TRUE);

參數

nIndex
[in]指定要更新進度指示器之窗格的索引。

nCurr
[in]指定進度指標的目前值。

bUpdate
[in]指定是否應該立即更新窗格。

備註

當您想要更新指定窗格中進度列的進度指示器時,請呼叫此方法。

若要針對指定的窗格使用此函式,您必須先呼叫 CMFCStatusBar::EnablePaneProgressBar

CMFCStatusBar::SetPaneStyle

void SetPaneStyle(
    int nIndex,
    UINT nStyle);

參數

[in] nIndex
[in] nStyle

備註

CMFCStatusBar::SetPaneText

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

參數

[in] nIndex
[in] lpszNewText
[in] bUpdate

傳回值

備註

CMFCStatusBar::SetPaneTextColor

設定指定窗格的文字色彩。

void SetPaneTextColor(
    int nIndex,
    COLORREF clrText=(COLORREF)-1,
    BOOL bUpdate=TRUE);

參數

nIndex
[in]指定要指派新文字色彩之窗格的索引。

clrText
[in]指定文字色彩。

bUpdate
[in]如果為 TRUE,請立即更新窗格內容。 否則,除非窗格因其他方法失效,否則請勿更新窗格內容。

CMFCStatusBar::SetPaneWidth

設定狀態列窗格的寬度。

void SetPaneWidth(
    int nIndex,
    int cx);

參數

nIndex
[in]要設定新寬度的狀態列窗格索引。

cx
[in]狀態列窗格的新寬度,以像素為單位。

CMFCStatusBar::SetTipText

設定狀態列窗格的工具提示文字。

void SetTipText(
    int nIndex,
    LPCTSTR pszTipText);

參數

nIndex
[in]您要指派工具提示文字之窗格的索引。

pszTipText
[in]新的工具提示文字。

另請參閱

階層架構圖表
類別
CPane 類別
CStatusBar 類別