
- •Глава 12 Современный пользовательский интерфейс
- •Основы элементов управления общего пользования
- •Инициализация библиотеки
- •Создание элементов управления общего пользования
- •Стили элементов управления общего пользования
- •Основные стили окна
- •Флаги расширенного стиля окна
- •Флаги основного стиля элемента управления общего пользования
- •Флаги стиля, специфичные для конкретного элемента управления
- •Посылка сообщений элементам управления общего пользования
- •Уведомляющие сообщения от элементов управления общего пользования
- •Элементы управления главного окна
- •Панели инструментов
- •Создание панели инструментов
- •Стили окна панели инструментов
- •Задание изображений на поверхности кнопок
- •Заполнение массива tbbutton
- •Пример создания панели инструментов
- •Перемещение и изменение размеров панели инструментов
- •Поддержка элемента управления подсказка
- •Добавление дочерних окон в панель инструментов
- •Резервирование места для дочернего окна на панели инструментов
- •Создание элементов управления на панели инструментов
- •Изменение размеров панели инструментов с дочерними окнами
- •Поддержка окон подсказки для дочерних окон панели инструментов
- •Изменение конфигурации панели инструментов
- •Строка состояния
- •Создание строки состояния
- •Перемещение и изменение размеров строки состояния
- •Поддержка просмотра меню
- •Просмотр элементов меню
- •Просмотр элементов всплывающего меню
- •Просмотр системного меню
- •Программа gadgets
Флаги расширенного стиля окна
Флаги расширенного стиля окна имеют имена, начинающиеся с префикса WS_EX_, и передаются в функцию CreateWindowEx в качестве первого параметра. Из 27 расширенных стилей 3 относятся к созданию дочерних окон: WS_EX_CLIENTEDGE, WS_EX_STATICEDGE и WS_EX_NOPARENTNOTIFY.
Флаги стиля WS_EX_CLIENTEDGE и WS_EX_STATICEDGE поддерживают трехмерность изображения. Надлежащее их использование позволяет приложению хорошо выглядеть по отношению к другим приложениям Windows 95. Обратите внимание, что эти флаги стиля поддерживаются только в Windows 95 и версиях Windows NT, имеющих интерфейс системы Windows 95. (Эти флаги не имеют никакого эффекта в более ранних версиях операционной системы.)
Флаг стиля WS_EX_CLIENTEDGE строит "углубленную" область основной рабочей зоны приложения. Например, окно текста программы текстового процессора. Так как большинство элементов управления, таких как панель инструментов и строка состояния, создаются вне этой области, избегайте этих флагов стиля для родительских окон панели инструментов и строки статуса. Кроме того, избегайте использования флага стиля WS_EX_OVERLAPPEDWINDOW, который включает как часть своего определения флаг стиля WS_EX_CLIENTEDGE.
Флаг стиля WS_EX_STATICEDGE создает углубленное представление только для окон, в которые осуществляется вывод. Например, уведомляющее окно на панели задач Windows 95 — маленькое окно у правого края панели задач, содержащее значки строки состояния и часы — использует этот стиль. Этот флаг используется с такими элементами управления как индикатор процесса и окно анимационного изображения. Кроме того, элементы управления, предназначенные только для вывода, входящие в состав строки состояния или панели инструментов, будут, вероятно, использовать этот флаг стиля, так как его уникальное представление легко понимается опытным пользователем Windows 95.
Флаг стиля WS_EX_NOPARENTNOTIFY отменяет посылку уведомляющих сообщений WM_PARENTNOTIFY дочерним окном родительскому. Без установки этого бита дочернее окно посылает уведомляющие сообщения своему родительскому окну, когда дочернее окно создается, уничтожается или получает сообщение о нажатии клавиш мыши. Элементы управления диалогового окна всегда строятся с использованием этого флага для снижения трафика сообщений.
Флаги основного стиля элемента управления общего пользования
Библиотека элементов управления общего пользования поддерживает набор значений стиля с префиксом CCS_ для использования с панелями инструментов, окнами состояния и заголовками списка просмотра. Это флаги CCS_ADJUSTABLE, CCS_BOTTOM, CCS_NODIVIDER, CCS_NOMOVEY, CCS_NOPARENTALIGN, CCS_NORESIZE и CCS_TOP. Поскольку смысл этих флагов стиля зависит от конкретного элемента управления, при дальнейшем рассмотрении мы будем обращать ваше внимание на детали.
Флаги стиля, специфичные для конкретного элемента управления
Элементы управления общего пользования Windows 95 так же как и пред- определенные элементы управления диалогового окна имеют специфичные флаги стиля, такие как BS_PUSHBUTTON, ES_MULTILINE, LBS_SORT. Так же как и предопределенные элементы управления, каждый стиль элемента управления общего пользования имеет уникальный префикс. Все эти префиксы приведены в таблице на рис. 12.3. Более простые элементы управления общего пользования не имеют специфичных флагов стиля.
Детальное рассмотрение индивидуальных флагов стилей будет приведено позднее в этой главе при подробном описании конкретных элементов управления общего пользования.
Категория/Элемент управления |
Префикс флага стиля |
Пример |
Элементы управления главного окна |
||
Панель инструментов |
TBSTYLE_ |
TBSTYLE_ALTDRAG |
Окно подсказки |
Нет |
|
Строка состояния |
SBARS_ |
SBARS_SIZEGRIP |
Анимационное изображение |
ACS_ |
ACS_AUTOPLAY |
Индикатор процесса |
Нет |
|
Составные диалоговые элементы управления |
||
Страница свойств |
Нет |
|
Набор страниц свойств |
Нет |
|
Элементы управления Windows Explorer |
||
Дерево просмотра |
TVS_ |
TVS_HASBUTTONS |
Список просмотра |
LVS_ |
LVS_ALIGNLEFT |
Список изображений |
Нет |
|
Другие элементы управления |
||
Список, поддерживающий операции типа drag/drop |
Нет |
|
(продолжение)
Категория/Элемент управления |
Префикс флага стиля |
Пример |
Заголовок списка просмотра |
HDS_ |
HDS_BUTTONS |
Горячая клавиша |
Нет |
|
Усовершенствованный редактор |
ES_ |
ES_DISABLENOSCROLL |
Набор закладок для выбора |
TCS_ |
TCS_BUTTONS |
Окно с движком для выбора значения из диапазона |
TBS_ |
TBS_AUTOTICKS |
Полоса прокрутки, связанная с окном редактирования для изменения значения |
UDS_ |
UDS_ALIGNLEFT |
Рис. 12.3. Префиксы флагов стилей элементов управления общего пользования