Класс CStatusBarCtrl
Предоставляет функциональные возможности стандартного элемента управления "индикатор статуса" Windows.
Синтаксис
class CStatusBarCtrl : public CWnd
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CStatusBarCtrl::CStatusBarCtrl | Формирует объект CStatusBarCtrl . |
Открытые методы
Имя | Описание |
---|---|
CStatusBarCtrl::Create | Создает элемент управления строки состояния и присоединяет его к объекту CStatusBarCtrl . |
CStatusBarCtrl::CreateEx | Создает элемент управления строки состояния с указанными расширенными стилями Windows и присоединяет его к объекту CStatusBarCtrl . |
CStatusBarCtrl::D rawItem | Вызывается, когда визуальный аспект элемента управления "Строка состояния владельца" изменяется. |
CStatusBarCtrl::GetBorders | Извлекает текущие ширины горизонтальных и вертикальных границ элемента управления строк состояния. |
CStatusBarCtrl::GetIcon | Извлекает значок для части (также известной как панель) в текущем элементе управления строки состояния. |
CStatusBarCtrl::GetParts | Извлекает количество частей в элементе управления строкой состояния. |
CStatusBarCtrl::GetRect | Извлекает ограничивающий прямоугольник части в элементе управления строкой состояния. |
CStatusBarCtrl::GetText | Извлекает текст из заданной части элемента управления строки состояния. |
CStatusBarCtrl::GetTextLength | Извлеките длину текста в символах из заданной части элемента управления строк состояния. |
CStatusBarCtrl::GetTipText | Извлекает текст подсказки для области в строке состояния. |
CStatusBarCtrl::IsSimple | Проверяет элемент управления окном состояния, чтобы определить, находится ли он в простом режиме. |
CStatusBarCtrl::SetBkColor | Задает цвет фона в строке состояния. |
CStatusBarCtrl::SetIcon | Задает значок области в строке состояния. |
CStatusBarCtrl::SetMinHeight | Задает минимальную высоту области рисования панели состояния. |
CStatusBarCtrl::SetParts | Задает количество частей в элементе управления строкой состояния и координату правого края каждой части. |
CStatusBarCtrl::SetSimple | Указывает, отображается ли элемент управления состоянием простой текст или отображаются все элементы управления, заданные предыдущим вызовом SetParts . |
CStatusBarCtrl::SetText | Задает текст в указанной части элемента управления "Строка состояния". |
CStatusBarCtrl::SetTipText | Задает текст подсказки для области в строке состояния. |
Замечания
Элемент управления строкой состояния — это горизонтальное окно, которое обычно отображается в нижней части родительского окна, в котором приложение может отображать различные типы сведений о состоянии. Элемент управления "Строка состояния" можно разделить на части, чтобы отобразить несколько типов сведений.
Этот элемент управления (и, следовательно CStatusBarCtrl
, класс) доступен только для программ под управлением Windows 95/98 и Windows NT версии 3.51 и более поздних версий.
Дополнительные сведения об использовании CStatusBarCtrl
см. в разделе "Элементы управления " и "Использование CStatusBarCtrl".
Иерархия наследования
CStatusBarCtrl
Требования
Заголовок: afxcmn.h
CStatusBarCtrl::Create
Создает элемент управления строки состояния и присоединяет его к объекту CStatusBarCtrl
.
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Параметры
dwStyle
Задает стиль элемента управления строкой состояния. Примените любое сочетание стилей элементов управления строк состояния, перечисленных в стилях common Control в пакете SDK для Windows. Этот параметр должен включать стиль WS_CHILD. Он также должен включать стиль WS_VISIBLE.
rect
Указывает размер и позицию элемента управления строкой состояния. Это может быть объект CRect или структура RECT .
pParentWnd
Указывает родительское окно элемента управления строкой состояния, как правило, .CDialog
Он не должен иметь значение NULL.
nID
Указывает идентификатор элемента управления строки состояния.
Возвращаемое значение
Ненулевое значение в случае успеха, иначе — 0.
Замечания
Вы создаете два CStatusBarCtrl
шага. Сначала вызовите конструктор, а затем вызов Create
, который создает элемент управления строк состояния и присоединяет его к объекту CStatusBarCtrl
.
Позиция по умолчанию окна состояния находится в нижней части родительского окна, но можно указать стиль CCS_TOP, чтобы он отображалась в верхней части клиентской области родительского окна. Вы можете указать стиль SBARS_SIZEGRIP, чтобы включить сцепление размера в правом конце окна состояния. Объединение стилей CCS_TOP и SBARS_SIZEGRIP не рекомендуется, так как результирующий сцепление размера не работает, даже если система рисует ее в окне состояния.
Чтобы создать строку состояния с расширенными стилями окон, вызовите CStatusBarCtrl::CreateEx вместо Create
.
Пример
VERIFY(m_wndSBC.Create(WS_CHILD | WS_VISIBLE | CCS_BOTTOM | SBARS_SIZEGRIP,
CRect(0, 0, 0, 0), this, IDC_STATUSBARCTRL));
CStatusBarCtrl::CreateEx
Создает элемент управления (дочернее окно) и связывает его с CStatusBarCtrl
объектом.
virtual BOOL CreateEx(
DWORD dwExStyle,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Параметры
dwExStyle
Задает расширенный стиль создаваемого элемента управления. Список расширенных стилей Windows см. в параметре dwExStyle для CreateWindowEx в пакете SDK для Windows.
dwStyle
Задает стиль элемента управления строкой состояния. Примените любое сочетание стилей элементов управления строк состояния, перечисленных в стилях common Control в пакете SDK для Windows. Этот параметр должен включать стиль WS_CHILD. Он также должен включать стиль WS_VISIBLE.
rect
Ссылка на структуру RECT , описывающую размер и положение создаваемого окна в координатах клиента pParentWnd.
pParentWnd
Указатель на окно, которое является родительским элементом элемента управления.
nID
Идентификатор дочернего окна элемента управления.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Используйте CreateEx
вместо создания расширенные стили Windows, указанные предисловием расширенного стиля Windows WS_EX_.
CStatusBarCtrl::CStatusBarCtrl
Формирует объект CStatusBarCtrl
.
CStatusBarCtrl();
CStatusBarCtrl::D rawItem
Вызывается платформой, когда визуальный аспект элемента управления "Строка состояния владельца" изменяется.
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
Параметры
lpDrawItemStruct
Длинный указатель на структуру DRAWITEMSTRUCT , содержащую сведения о типе документа.
Замечания
Элемент itemAction
DRAWITEMSTRUCT
структуры определяет действие рисования, которое необходимо выполнить.
По умолчанию эта функция-член ничего не делает. Переопределите эту функцию-член, чтобы реализовать рисование для объекта owner-draw CStatusBarCtrl
.
Приложение должно восстановить все объекты графического интерфейса устройства (GDI), выбранные для контекста отображения, предоставленного в lpDrawItemStruct , прежде чем эта функция-член завершится.
CStatusBarCtrl::GetBorders
Извлекает текущие ширины элемента управления состояния горизонтальных и вертикальных границ и пространства между прямоугольниками.
BOOL GetBorders(int* pBorders) const;
BOOL GetBorders(
int& nHorz,
int& nVert,
int& nSpacing) const;
Параметры
pBorders
Адрес целочисленного массива с тремя элементами. Первый элемент получает ширину горизонтальной границы, второй получает ширину вертикальной границы, а третья получает ширину границы между прямоугольниками.
nHorz
Ссылка на целое число, которое получает ширину горизонтальной границы.
nVert
Ссылка на целое число, которое получает ширину вертикальной границы.
nSpacing
Ссылка на целое число, которое получает ширину границы между прямоугольниками.
Возвращаемое значение
Ненулевое значение в случае успеха, иначе — 0.
Замечания
Эти границы определяют интервал между внешним краем элемента управления и прямоугольниками в элементе управления, содержащим текст.
Пример
RECT rectPane1;
VERIFY(m_wndSBC.GetRect(1, &rectPane1));
int borderArray[3];
VERIFY(m_wndSBC.GetBorders(borderArray));
int nHorz, nVert, nSpacing;
VERIFY(m_wndSBC.GetBorders(nHorz, nVert, nSpacing));
CStatusBarCtrl::GetIcon
Извлекает значок для части (также известной как панель) в текущем элементе управления строки состояния.
HICON GetIcon(int iPart) const;
Параметры
iPart
[in] Отсчитываемый от нуля индекс части, содержащей полученный значок. Если этот параметр равен -1, то предполагается, что строка состояния является простой строкой состояния режима.
Возвращаемое значение
Дескриптор значка, если метод выполнен успешно; в противном случае значение NULL.
Замечания
Этот метод отправляет сообщение SB_GETICON , описанное в пакете SDK для Windows.
Элемент управления строкой состояния состоит из строки текстовых областей вывода, которые также называются частями. Дополнительные сведения о строке состояния см. в разделе "Реализация строки состояния" в MFC и настройка режима объекта CStatusBarCtrl.
Пример
Первый пример кода определяет переменную, m_statusBar
которая используется для доступа к текущему элементу управления строк состояния. Эта переменная используется в следующем примере.
public:
CStatusBarCtrl m_statusBar;
Следующий пример кода копирует значок в две области текущего элемента управления строк состояния. В предыдущем разделе примера кода мы создали элемент управления строк состояния с тремя панелями, а затем добавили значок в первую область. Этот пример извлекает значок из первой области, а затем добавляет его во вторую и третью область.
// Get the icon from pane 1 and set it in panes 2 and 3.
HICON hIcon = m_statusBar.GetIcon(0);
m_statusBar.SetIcon(1, hIcon);
m_statusBar.SetIcon(2, hIcon);
CStatusBarCtrl::GetParts
Извлекает количество частей в элементе управления строкой состояния.
int GetParts(
int nParts,
int* pParts) const;
Параметры
nParts
Количество частей, для которых требуется получить координаты. Если этот параметр больше количества частей в элементе управления, сообщение извлекает координаты только для существующих частей.
pParts
Адрес целочисленного массива с таким же числом элементов, что и количество частей, указанных nParts. Каждый элемент в массиве получает клиентская координата правого края соответствующей части. Если для элемента задано значение - 1, позиция правого края для этой части расширяется до правого края строки состояния.
Возвращаемое значение
Количество частей элемента управления в случае успешного выполнения или нуля.
Замечания
Эта функция-член также получает координату правого края заданного количества частей.
Пример
int pParts[2];
int nParts = m_wndSBC.GetParts(2, pParts);
CStatusBarCtrl::GetRect
Извлекает ограничивающий прямоугольник части в элементе управления строкой состояния.
BOOL GetRect(
int nPane,
LPRECT lpRect) const;
Параметры
nPane
Отсчитываемый от нуля индекс части, ограничивающий прямоугольник которого требуется извлечь.
lpRect
Адрес структуры RECT, получающей ограничивающий прямоугольник.
Возвращаемое значение
Ненулевое значение в случае успеха, иначе — 0.
Пример
CRect rectPane1;
VERIFY(m_wndSBC.GetRect(1, &rectPane1));
CStatusBarCtrl::GetText
Извлекает текст из заданной части элемента управления строки состояния.
CString GetText(
int nPane,
int* pType = NULL) const;
int GetText(
LPCTSTR lpszText,
int nPane,
int* pType = NULL) const;
Параметры
lpszText
Адрес буфера, получающего текст. Этот параметр является строкой, завершающейся значением NULL.
nPane
Отсчитываемый от нуля индекс части, из которой требуется получить текст.
pType
Указатель на целое число, которое получает сведения о типе. Тип может быть одним из следующих значений:
0 Текст рисуется с границей, чтобы показаться ниже плоскости строки состояния.
SBT_NOBORDERS текст рисуется без границ.
SBT_POPOUT текст рисуется с границей, чтобы показаться выше плоскости строки состояния.
SBT_OWNERDRAW Если текст имеет тип документа SBT_OWNERDRAW, pType получает это сообщение и возвращает 32-разрядное значение, связанное с текстом, а не типом длины и операции.
Возвращаемое значение
Длина в символах текста или CString , содержащего текущий текст.
Пример
int nType;
TCHAR *pszPaneOneText;
pszPaneOneText = new TCHAR[m_wndSBC.GetTextLength(1, &nType) + 1];
int nTextLength = m_wndSBC.GetText(pszPaneOneText, 1, &nType);
switch (nType)
{
case 0:
// Text is drawn with a border to appear lower than the
// plane of the status bar
break;
case SBT_NOBORDERS:
// text is drawn without borders
break;
case SBT_OWNERDRAW:
// Text is drawn by the parent window
break;
case SBT_POPOUT:
// Text is drawn with a border to appear higher than the
// plane of the status bar
break;
}
delete pszPaneOneText;
CStatusBarCtrl::GetTextLength
Извлекает длину текста в символах из заданной части элемента управления строк состояния.
int GetTextLength(
int nPane,
int* pType = NULL) const;
Параметры
nPane
Отсчитываемый от нуля индекс части, из которой требуется получить текст.
pType
Указатель на целое число, которое получает сведения о типе. Тип может быть одним из следующих значений:
0 Текст рисуется с границей, чтобы показаться ниже плоскости строки состояния.
SBT_NOBORDERS текст рисуется без границ.
SBT_OWNERDRAW Текст рисуется родительским окном.
SBT_POPOUT текст рисуется с границей, чтобы показаться выше плоскости строки состояния.
Возвращаемое значение
Длина текста в символах.
Пример
int nType;
int nLength = m_wndSBC.GetTextLength(0, &nType);
switch (nType)
{
case 0:
// Text is drawn with a border to appear lower than the
// plane of the status bar
break;
case SBT_NOBORDERS:
// text is drawn without borders
break;
case SBT_OWNERDRAW:
// Text is drawn by the parent window
break;
case SBT_POPOUT:
// Text is drawn with a border to appear higher than the
// plane of the status bar
break;
}
CStatusBarCtrl::GetTipText
Извлекает текст подсказки для области в строке состояния.
CString GetTipText(int nPane) const;
Параметры
nPane
Отсчитываемый от нуля индекс панели состояния для получения текста подсказки.
Возвращаемое значение
Объект CString , содержащий текст, используемый в подсказке.
Замечания
Эта функция-член реализует поведение сообщения Win32 SB_GETTIPTEXT, как описано в пакете SDK для Windows.
Пример
CString csPane0TipText = m_wndSBC.GetTipText(0);
CStatusBarCtrl::IsSimple
Проверяет элемент управления окном состояния, чтобы определить, находится ли он в простом режиме.
BOOL IsSimple() const;
Возвращаемое значение
Ненулевое значение, если элемент управления окном состояния находится в простом режиме; в противном случае ноль.
Замечания
Эта функция-член реализует поведение сообщения Win32 SB_ISSIMPLE, как описано в пакете SDK для Windows.
CStatusBarCtrl::SetBkColor
Задает цвет фона в строке состояния.
COLORREF SetBkColor(COLORREF cr);
Параметры
cr
Значение COLORREF, указывающее новый цвет фона. Укажите значение CLR_DEFAULT, чтобы строка состояния использовала цвет фона по умолчанию.
Возвращаемое значение
Значение COLORREF , представляющее предыдущий цвет фона по умолчанию.
Замечания
Эта функция-член реализует поведение сообщения Win32 SB_SETBKCOLOR, как описано в пакете SDK для Windows.
Пример
m_wndSBC.SetBkColor(RGB(0, 0, 250));
HICON hIcon = AfxGetApp()->LoadIcon(IDI_PANE_0_ICON);
VERIFY(hIcon);
VERIFY(m_wndSBC.SetIcon(0, hIcon));
CStatusBarCtrl::SetIcon
Задает значок области в строке состояния.
BOOL SetIcon(
int nPane,
HICON hIcon);
Параметры
nPane
Отсчитываемый от нуля индекс области, который получит значок. Если этот параметр равен -1, то предполагается, что строка состояния является простой строкой состояния.
hIcon
Дескриптор для заданного значка. Если это значение равно NULL, значок удаляется из части.
Возвращаемое значение
Ненулевое значение в случае успеха, иначе — 0.
Замечания
Эта функция-член реализует поведение SB_SETICON сообщения Win32, как описано в пакете SDK для Windows.
Пример
См. пример CStatusBarCtrl ::SetBkColor.
CStatusBarCtrl::SetMinHeight
Задает минимальную высоту области рисования панели состояния.
void SetMinHeight(int nMin);
Параметры
nMin
Минимальная высота элемента управления в пикселях.
Замечания
Минимальная высота — это сумма nMin и в два раза ширина в пикселях вертикальной границы элемента управления строк состояния.
Пример
m_wndSBC.SetMinHeight(40);
CStatusBarCtrl::SetParts
Задает количество частей в элементе управления строкой состояния и координату правого края каждой части.
BOOL SetParts(
int nParts,
int* pWidths);
Параметры
nParts
Количество заданных частей. Число частей не может превышать 255.
pWidths
Адрес целочисленного массива с таким же количеством элементов, что и части, указанные nParts. Каждый элемент в массиве указывает позицию в координатах клиента справа от соответствующей части. Если элемент равен - 1, позиция правого края для этой части расширяется до правого края элемента управления.
Возвращаемое значение
Ненулевое значение в случае успеха, иначе — 0.
Пример
const int c_nParts = 4;
CRect rect;
m_wndSBC.GetClientRect(&rect);
int aWidths[c_nParts] = {rect.right - 300, rect.right - 200, rect.right - 100,
-1};
VERIFY(m_wndSBC.SetParts(c_nParts, aWidths));
CStatusBarCtrl::SetSimple
Указывает, отображается ли элемент управления состоянием простой текст или отображаются все элементы управления, заданные предыдущим вызовом SetParts.
BOOL SetSimple(BOOL bSimple = TRUE);
Параметры
bSimple
[in] Флаг типа отображения. Если этот параметр имеет значение TRUE, элемент управления отображает простой текст; Если значение равно FALSE, отображается несколько частей.
Возвращаемое значение
Всегда возвращает 0.
Замечания
Если приложение изменяет элемент управления строкой состояния с не простого на простое или наоборот, система немедленно перерисовывает элемент управления.
CStatusBarCtrl::SetText
Задает текст в указанной части элемента управления "Строка состояния".
BOOL SetText(
LPCTSTR lpszText,
int nPane,
int nType);
Параметры
lpszText
Адрес в виде оканчивающейся нулем строки, в которой указан необходимый текст. Если nType SBT_OWNERDRAW, lpszText представляет 32 бита данных.
nPane
Отсчитываемый от нуля индекс настраиваемой части. Если это значение равно 255, строка состояния считается простым элементом управления, состоящим из одной части.
nType
Тип операции отрисовки. Список возможных значений см . в SB_SETTEXT сообщении .
Возвращаемое значение
Ненулевое значение в случае успеха, иначе — 0.
Замечания
Сообщение отменяет часть измененного элемента управления, что приводит к отображению нового текста при следующем получении сообщения WM_PAINT.
Пример
VERIFY(m_wndSBC.SetText(_T("Text For Pane 1"), 1, 0));
CStatusBarCtrl::SetTipText
Задает текст подсказки для области в строке состояния.
void SetTipText(
int nPane,
LPCTSTR pszTipText);
Параметры
nPane
Отсчитываемый от нуля индекс панели состояния для получения текста подсказки.
pszTipText
Указатель на строку, содержащую текст подсказки.
Замечания
Эта функция-член реализует поведение сообщения Win32 SB_SETTIPTEXT, как описано в пакете SDK для Windows.
Пример
m_wndSBC.SetTipText(0, _T("This is Pane 0"));