CMFCStatusBar 类
CMFCStatusBar
类实现类似于 CStatusBar
类的状态栏。 但是,CMFCStatusBar
类具有 CStatusBar
类未提供的功能,例如显示图像、动画和进度栏的功能,以及对鼠标双击作出响应的功能。
有关详细信息,请参阅所安装的 Visual Studio 的 C\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
方法,然后从 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);
继承层次结构
要求
标头: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。 因此,无需任何其他计算即可将进度显示为百分比。
应为 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] 指定要使其内容失效并重新绘制其内容的窗格的索引。
备注
状态栏失效后,会对其进行标记以供重新绘制。 当 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] 新的工具提示文本。