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

Стили окна панели инструментов

Основные свойства панели инструментов управляются с помощью установки флагов стиля окна. Разрешено совместное использование флагов основного стиля элементов управления общего пользования (CCS_) и флагов стиля, специфичных для панели инструментов (TBSTYLE_) (см. таблицу):

Категория

Флаг стиля

Описание

Представление

CCS_NODIVIDER

Запрещает рисование разделительной линии над панелью инструментов

TBSTYLE_WRAPABLE

Поддерживает панели инструментов, состоящую из нескольких строк

Автоматическое размещение по оси y

CCS_TOP

Помещает панель инструментов в верхнюю часть родительского окна (по умолчанию), выравнивая ширину по родительскому окну и высоту по размерам кнопки.

CCS_BOTTOM

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

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

Категория

Флаг стиля

Описание

CCS_NOMOVEY

Устанавливает начальное положение по оси x (у левой границы родительского окна), но не устанавливает начальное положение по оси y, выравнивая ширину по рабочей зоне родительского окна и высоту по размерам кнопки.

Запрещение автоматического перемещения и автоматического изменения размера

CCS_NOPARENTALIGN

Панель инструментов устанавливает свою высоту, но не положение и ширину. Для нормальной работы посылается сообщение для изменения размера после создания.

CCS_NORESIZE

Запрещает все автоматические перемещения и изменения размеров.Это запрещает следующие флаги стиля: CCS_TOP, CCS_BOTTOM, CCS_NOMOVEY и CCS_NOPARENTALIGN. Вы должны явно задать размеры и положение панели инструментов.

Изменение конфигурации панели инструментов

CCS_ADJUSTABLE

Поддерживает использование левой кнопки мыши при нажатой клавише <Shift> для перемещения и двойной щелчок для вывода диалогового окна изменения конфигурации. (Более детально об изменении конфигурации панели инструментов читайте соответствующий раздел этой главы.)

TBSTYLE_ALTDRAG

Изменяет панель инструментов, имеющую стиль CCS_ADJUSTABLE так, что для перемещения кнопок вместо левой кнопки мыши и клавиши <Shift> используется клавиша <Alt> и левая кнопка мыши.

Поддержка окон подсказки

TBSTYLE_TOOLTIPS

Строит элемент управления окно подсказки.

При создании панели инструментов устанавливается по умолчанию только стиль CCS_TOP, что приводит к расположению панели инструментов в верхней части родительского окна. После этого, родительское окно может сделать запрос панели инструментов для изменения ее размеров и местоположения посредством посылки сообщения TB_AUTOSIZE, что обычно и делает родительское окно при обработке сообщения WM_SIZE. За исключением посылки сообщения с запросом об изменении размера панель инструментов с флагом CCS_TOP или CCS_BOTTOM достаточно самостоятельна и не требует другого обслуживания. Присутствие флагов стиля, которые запрещают свойства автоматического перемещения и автоматического изменения размеров панели инструментов, требует немного больших затрат для обслуживания панели инструментов при изменении размеров родительского окна.

Два флага стиля изменяют представление панели инструментов. Первый, CCS_NODIVIDER, удаляет разделительную линию, призванную отделить кнопки панели инструментов стиля CCS_TOP от меню приложения. Для панелей инструментов, отображаемых в других местах (таких как вторая панель инструментов, выводимая под первой), вероятно, потребуется спрятать разделительную линию. Это справедливо и для окон, имеющих панель инструментов, но не имеющих меню — эта разделительная линия будет плохо смотреться. Другой флаг стиля, относящийся к изменению представления панели инструментов, TBSTYLE_WRAPABLE позволяет переносить на другую строку кнопки панели инструментов. Без этого флага, кнопки, которые слишком длинные чтобы поместиться в одну линию, делаются невидимыми и становятся недоступными для пользователя.

Три флага стиля управляют перемещением относительно оси y: CCS_TOP (по умолчанию), CCS_BOTTOM и CCS_NOMOVEY. Эти флаги определяют, как будет расположена панель инструментов в ее родительском окне как при создании, так и при получении сообщения TB_AUTOSIZE. Флаг CCS_NOMOVEY делает возможным только приведение ширины (для полного использования рабочей области родительского окна), высоты и месторасположения относительно оси x, и оставляет на ваше усмотрение перемещение панели инструментов вдоль оси y, как при указании значений по оси y в вызове функции CreateWindow, так и при вызове функций типа MoveWindow после того, как панель инструментов будет создана. Панель инструментов с этим флагом была бы удобна в качестве второй панели инструментов, расположенной непосредственно под панелью инструментов с флагом CCS_TOP.

Два других флага стиля ограничивают возможности автоматического перемещения и автоматического изменения размеров панели инструментов. При использовании флага CCS_NOPARENTALIGN высота панели инструментов устанавливается в соответствии с высотой кнопок, но необходимо установить местоположение и ширину. Флаг CCS_NORESIZE полностью запрещает любое перемещение и изменение размеров панели инструментов. Этот флаг был бы полезным при использовании панели инструментов как элемента управления в диалоговом окне, когда она должна занимать указанную область без самостоятельного изменения размеров. Этот флаг был бы также полезен при установке двух и более панелей инструментов друг за другом в одной строке.

Флаг стиля CCS_ADJUSTABLE строит панель инструментов, которую пользователь может изменять "на лету". Кнопки могут быть перемещены в рамках панели инструментов или перетащены за панель инструментов с помощью клавиши <Shift> и левой кнопки мыши. Двойной щелчок левой кнопкой мыши приводит к вызову диалогового окна изменения конфигурации панели инструментов (Customize Toolbar dialog box) для добавления, удаления или перемещения кнопок. (Это диалоговое окно появляется и при получении панелью инструментов сообщения TB_CUSTOMIZE.) Изменение конфигурации требует от родительского окна реагирования на некоторые уведомляющие сообщения — TBN_QUERYINSERT и TBN_QUERYDELETE, посылаемые среди других панелью инструментов, которые запрашивают разрешение на вставку или удаление кнопок. Для панели инструментов с изменяемой конфигурацией флаг стиля TBSTYLE_ALTDRAG изменяет пользовательский интерфейс перемещения кнопок с сочетания клавиши <Shift> и левой кнопки мыши на сочетание клавиши <Alt> и левой кнопки мыши для тех случаев, когда первое сочетание используется в других целях.

Флаг стиля TBSTYLE_TOOLTIPS требует от панели инструментов создания элемента управления подсказка, который выводит маленькое окно с текстом для каждой кнопки. Родительское окно панели инструментов получает уведомление TTN_NEEDTEXT (в форме сообщения WM_NOTIFY), когда окну подсказки необходим текст для конкретной кнопки.

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