Сообщения для Statusbar
В этом разделе мы перечислим и кратко опишем сообщения, специально предназначенные для работы с органом управления Statusbar. Полную информацию вы сможете найти в справочной системе SDK.
SB_SETMINHEIGHT
Установка минимальной высоты области окна Statusbar, которая используется для отображения текста или рисования изображений.
wParam = (WPARAM) minHeight; // минимальная высота в пикселах
Значение параметра lParam должно быть равно нулю.
SB_SETTEXT
Запись текста в заданную область окна Statusbar.
wParam = (WPARAM) iPart | uType; // область и тип отображения lParam = (LPARAM) (LPSTR) szText; // адрес строки
Через параметр iPart передается номер области. Этот номер может комбинироваться при помощи логической операции ИЛИ с одной из нескольких констант, описанной нами ранее в разделе " Запись текста в область Statusbar".
Через параметр szText передается адрес строки текста. Если используется константа SBT_OWNERDRAW, параметр сообщения lParam служит для передачи произвольного 32-разрядного значения, например, идентификатора битового изображения.
SB_SETPARTS
Установка количества областей и определение правой границы каждой области.
wParam = (WPARAM) nParts; // количество областей lParam = (LPARAM) (LPINT) aWidths; // границы
Это сообщение мы подробно описали в разделе " Разделение Statusbar на области".
SB_SIMPLE
Переключение органа Statusbar из стандартного режима в упрощенный и обратно.
wParam = (WPARAM) (BOOL); // флаг режима
Параметр lParam должен быть равен нулю.
Если флаг fSimple принимает значение TRUE, Statusbar переключается в упрощенный режим. если FALSE - возвращается в стандартный режим.
Отметим, что в упрощенном режиме родительское окно не может рисовать в единственной области окна Statusbar. Поэтому упрощенный режим пригоден только для отображения текстовых сообщений.
SB_GETBORDERS
Определение ширины горизонтальной и вертикальной рамки окна Statusbar.
lParam = (LPARAM) (LPINT) aBorders; // адрес массива
Параметр wParam должен быть равен нулю.
Перед тем как послать окну Statusbar сообщение SB_GETBORDERS, вы должны подготовить массив из трех переменных типа int. В первый элемент массива будет записана ширина горизонтальной рамки, во второй - ширина вертикальной рамки, и в третий - ширина рамки между прямоугольниками.
SB_GETPARTS
Определение количества областей в окне состояния и координат правых границ этих областей.
wParam = (WPARAM) nParts; // количество областей lParam = (LPARAM) (LPINT) aRightCoord; // массив координат
Через параметр nParts передается количество областей, информация о координатах правых границ которых записывается в массив aRightCoord.
Функция SendMessage, пославшая сообщение SB_GETPARTS, возвращает количество существующих в окне Statusbar областей или нуль при ошибке.
SB_GETRECT
Определение границ заданной области в окне Statusbar.
wParam = (WPARAM) iPart; // номер области lParam = (LPARAM) (LPRECT) lprc; // границы области
Границы области, номер которой задан через параметр iPart, передается приложению через структуру типа RECT. Адрес этой структуры должен быть указан в параметре lprc перед посылкой сообщения.
SB_GETTEXT
Извлечение текста из заданной области Statusbar.
wParam = (WPARAM) iPart; // номер области lParam = (LPARAM) (LPSTR) szText; // адрес буфера для текста
Функция SendMesage возвращает в младшем 16-разрядном слове длину текста, в старшем, константу 0, SBT_NOBORDERS, SBT_POPOUT или SBT_RTLREADING. Если родительское окно само рисует внутри области при обработке сообщения WM_DRAWITEM, возвращается 32-разрядное значение, которое было передано при посылке сообщения SB_SETTEXT.
Перед тем как извлекать текст из области Statusbar, необходимо определить размер буфера для записи соответствующей текстовой строки. Это можно сделать при помощи сообщения SB_GETTEXTLENGTH, описанного ниже.
SB_GETTEXTLENGTH
Определение длины строки для заданной области окна Statusbar.
wParam = (WPARAM) iPart; // номер области
Значение параметра lParam должно быть равно нулю.
Функция SendMesage возвращает точно такое же значение, как и для сообщения SB_GETTEXT.