Операционная система Windows 95 для программиста

  d8ef8794     

Сообщения для 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.


Содержание раздела