Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ch-12_1.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
456.7 Кб
Скачать

Заполнение массива tbbutton

Создание панели инструментов требует определения конкретных параметров кнопок. Вам необходимо заполнить данными элементы массива TBBUTTON, которые определяют конкретные кнопки. После того, как панель инструментов создана, можно определить дополнительные кнопки путем посылки сообщения TB_ADDBUTTONS панели инструментов или вставить кнопки между существующими кнопками путем посылки сообщения TB_INSERTBUTTON.

TBBUTTON определяется в файле COMMCTRL.H следующим образом:

typedef struct _TBBUTTON

{

int iBitmap ;

int idCommand ;

BYTE fsState ;

BYTE fsStyle ;

BYTE bReserved[2] ;

DWORD dwData ;

int iString ;

} TBBUTTON ;

Обратите внимание, что это определение отличается от аналогичного, приведенного в файлах подсказки Win32, и не содержащего поля bReserved. При инициализации элементов структуры TBBUTTON следует определить два поля, связанные со всем массивом.

Поле iBitmap структуры TBBUTTON — это индекс (относительно нуля) изображения кнопки. При использовании битовых образов из библиотеки элементов управления общего пользования необходимо использовать константы STD_ и VIEW_ как значения в этом поле. В данной панели инструментов определяются собственные индексы изображений, в зависимости от порядка их включения в панель инструментов.

Поле idCommand структуры TBBUTTON — идентификатор команды, соответствующей кнопке. При нажатии кнопки она посылает сообщение WM_COMMAND с параметром wParam равным idCommand.

Поля fsState и fsStyle определяют начальное состояние и стиль кнопки. Последний не изменяется в течение всей жизни кнопки. Состояние кнопки устанавливается при ее создании и может быть изменено действиями пользователя или путем посылки сообщений панели инструментов. Ниже приведены пять стилей кнопок:

Стиль кнопки

Описание

TBSTYLE_BUTTON

Кнопка ведет себя как стандартная кнопка (pushbutton). Кнопка может быть нажата, но не может оставаться в нажатом состоянии.

TBSTYLE_SEP

Разделитель для создания пространства между кнопками или для резервирования места для дочерних элементов управления (таких как комбинированный список).

TBSTYLE_CHECK

Кнопка ведет себя как флажок (check box). Каждый щелчок мыши изменяет состояние кнопки (нажата/отжата).

TBSTYLE_GROUP

Кнопка является членом группы кнопок типа переключателей (radio buttons). Кнопка остается нажатой до тех пор, пока не будет нажата другая кнопка из этой группы.

TBSTYLE_CHECKGROUP

Объединяет свойства стилей TBSTYLE_CHECK и TBSTYLE_GROUP.

Пять стилей комбинируются для получения приблизительного эквивалента трех базовых типов кнопок диалоговых окон: кнопок, флажков, переключателей.

Ниже приведены шесть состояний кнопок:

Состояния кнопок

Описание

TBSTATE_CHECKED

Кнопка стиля флажок находится в нажатом состоянии

TBSTATE_PRESSED

Кнопка любого стиля находится в нажатом состоянии

TBSTATE_ENABLED

Кнопка доступна (может реагировать на действия мышью)

(продолжение)

Состояния кнопок

Описание

TBSTATE_HIDDEN

Скрытая кнопка. (Такая кнопка не отображается и ее место занимают другие кнопки.)

TBSTATE_INDETERMINATE

Кнопка находится в неопределенном состоянии, отображается серым цветом, может быть нажата.

TBSTATE_WRAP

Кнопки панели инструментов стиля TBSTYLE_WRAPABLE, находящиеся после кнопки, имеющей это состояние, отображаются в новой строке.

Каждое из этих состояний доступно для чтения и установки с помощью пары сообщений, специфичных для панели инструментов. Например, можно запросить, является ли конкретная кнопка доступной, путем посылки сообщения TB_ISBUTTONENABLED; посылая сообщение TB_ENABLEBUTTON можно сделать кнопку доступной или недоступной.

Поле dwData структуры TBBUTTON — это необязательное 4-х байтовое поле, предназначенное для использования. Например, вы можете сохранить в этом поле указатель на данные, специфические для этой кнопки. Возможно только однократная установка значения этого поля при создании кнопки. Вы можете получить значение из поля dwData путем посылки сообщения TB_GETBUTTON.

Поле iString структуры TBBUTTON — это индекс (относительно нуля) текстовой метки кнопки. Возможно добавление строк в список текстовых строк панели инструментов путем посылки сообщения TB_ADDSTRING.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]