CMFCStatusBar 類別
類別 CMFCStatusBar
會實作類似 CStatusBar
類別的狀態列。 不過, CMFCStatusBar
類別具有 CStatusBar
類別所未提供的功能,例如能夠顯示影像、動畫和進度列,而且能夠回應滑鼠按兩下。
如需更多詳細資料,請參閱 Visual Studio 安裝位置下之 VC\atlmfc\src\mfc 資料夾中的原始程式碼。
語法
class CMFCStatusBar : public CPane
成員
公用方法
受保護的方法
名稱 | 描述 |
---|---|
CMFCStatusBar::OnDrawPane | 當架構重新繪製狀態列窗格時,由架構呼叫。 |
備註
下圖顯示狀態 列示範範例 應用程式的狀態列圖。
範例
下列範例示範應用程式用來呼叫 類別中各種方法的 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);
繼承階層架構
需求
標頭: 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]新的工具提示文字。