Класс CMFCStatusBar
Класс CMFCStatusBar
реализует строку состояния, аналогичную классу CStatusBar
. Однако класс CMFCStatusBar
не содержит функции, предоставляемые классом CStatusBar
, такие как возможность отображать изображения, анимации и индикаторы выполнения, а также возможность реагировать на двойные нажатия мыши.
Дополнительные сведения см. в исходном коде, расположенном в папке VC\atlmfc\src\mfc установки Visual Studio.
Синтаксис
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 | Вызывается платформой перед созданием окна Windows, подключенного к этому CWnd объекту. (Переопределения CWnd::P reCreateWindow.) |
CMFCStatusBar::SetDrawExtendedArea | |
CMFCStatusBar::SetIndicator | |
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
классе. Эти переменные объявляются в 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;
В следующем примере показано, как получить ссылку на CMFCStatusBar
объект, введя GetStatusBar
метод в MainFrm.h, а затем вызывая этот метод из GetStatusBar
метода в StatusBarDemoView.h. Этот фрагмент кода является частью примера демонстрации строки состояния.
// in MainFrm.h
public:
CMFCStatusBar &GetStatusBar()
{
return m_wndStatusBar;
}
// in StatusBarDemoView.h
CMFCStatusBar &GetStatusBar() const
{
return ((CMainFrame *)AfxGetMainWnd())->GetStatusBar();
}
В следующем примере показано, как вызывать различные методы в классе в CMFCStatusBar
StatusBarDemoView.cpp. Константы объявляются в 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] Указывает индекс области, содержимое которой должно быть недействительным и перезаписано.
Замечания
Если строка состояния недопустима, она помечается для перераскрытия. Windows перерисовывает его, когда UpdateWindow
метод отправляет в метод WM_PAINT сообщение OnPaint
.
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::SetIndicator
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::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] Новый текст подсказки.