CMFCStatusBar 类

CMFCStatusBar 类实现类似于 CStatusBar 类的状态栏。 但是,CMFCStatusBar 类具有 CStatusBar 类未提供的功能,例如显示图像、动画和进度栏的功能,以及对鼠标双击作出响应的功能。

有关详细信息,请参阅所安装的 Visual Studio 的 C\atlmfc\src\mfc 文件夹中的源代码。

语法

class CMFCStatusBar : public CPane

成员

公共方法

名称 描述
CMFCStatusBar::CalcFixedLayout (替代 CBasePane::CalcFixedLayout。)
CMFCStatusBar::CommandToIndex
CMFCStatusBar::Create 创建控制条并将其附加到 CPane 对象。 (替代 CPane::Create
CMFCStatusBar::CreateEx 创建控制条并将其附加到 CPane 对象。 (替代 CPane::CreateEx。)
CMFCStatusBar::DoesAllowDynInsertBefore 确定是否可以在此窗格和父框架之间动态插入另一个窗格。 (替代 CBasePane::DoesAllowDynInsertBefore。)
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::PreCreateWindow 在创建附加到此 CWnd 对象的 Windows 窗口之前由框架调用。 (替代 CWnd::PreCreateWindow
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 方法,然后从 StatusBarDemoView.h 中的 GetStatusBar 方法调用此方法来获取对 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::DoesAllowDynInsertBefore

virtual BOOL DoesAllowDynInsertBefore() const;

返回值

注解

CMFCStatusBar::EnablePaneDoubleClick

启用或禁用对状态栏的鼠标双击的处理。

void EnablePaneDoubleClick(BOOL bEnable=TRUE);

参数

bEnable
[in] 如果为 TRUE,则启用鼠标双击的处理。 否则禁用鼠标双击的处理。

注解

如果启用状态栏以处理双击,Windows 会在每次用户双击状态栏窗格时,将 WM_COMMAND 通知与资源 ID 一起发送给状态栏的所有者。

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。 因此,无需任何其他计算即可将进度显示为百分比。

应为 clrBarclrBarDest 传递不同的值,以便将进度栏的背景色设置为混合渐变色。 。

若要设置当前进度,请调用 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] 指定要使其内容失效并重新绘制其内容的窗格的索引。

备注

状态栏失效后,会对其进行标记以供重新绘制。 当 UpdateWindow 方法向 OnPaint 方法发送 WM_PAINT 消息时,Windows 会重新绘制它。

CMFCStatusBar::OnDrawPane

重新绘制状态栏窗格。

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

参数

pDC
[in] 指向用于重新绘制的设备上下文的指针。

pPane
[in] 指向包含要重新绘制的窗格的信息的 CMFCStatusBarPaneInfo 结构的指针。

注解

默认情况下,OnDrawPane 使用设备上下文 pDC 根据窗格的样式和内容重新绘制窗格。

CMFCStatusBar 派生类中替代此方法以自定义窗格外观。

CMFCStatusBar::PreCreateWindow

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,则立即更新窗格内容。 否则,窗格内容会在失效时更新。

备注

如果要禁用当前动画,请调用 SetPaneAnimation 并将 hImageList 设置为 NULL。

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::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 类