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

Элементы управления главного окна

Три элемента управления общего пользования часто используются в главных окнах: панели инструментов, окна подсказки и строки состояния. На рис. 12.5 показаны примеры каждого из этих элементов управления, реализованных в программе GADGETS.

Рис. 12.5. Программа GADGETS, иллюстрирующая использование элементов управления общего пользования: панели инструментов, окна подсказки, строки состояния

Панели инструментов

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

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

Кроме кнопок панель инструментов может содержать другие дочерние окна элементов управления, такие как окно комбинированного списка (combo box). Создаются встроенные элементы управления с помощью вызова функции CreateWindow при задании окна панели инструментов как родительского. Как указано в книге Nancy Cuts "Programming the Windows 95 User Interface", реальным препятствием для помещения элементов управления в панель инструментов является резервирование достаточно большого пиксельного пространства. В панели инструментов могут также содержаться разделители между кнопками и встроенными элементами управления. Так же как и случае меню, когда разделители определяются в описании меню специальным флагом SEPARATOR, так и в случае панели инструментов разделители кнопок строятся с использованием кнопок панели инструментов стиля TBSTYLE_SEP. Дюжина или примерно столько разделителей требуется для резервирования места для окна комбинированного списка в панели инструментов.

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

Панель инструментов создается либо путем вызова функции CreateWindow и задания имени класса TOOLBARCLASSNAME, либо путем вызова функции CreateToolbarEx, которая создает панель инструментов и инициализирует набор кнопок. Ниже приведен прототип функции CreateToolbarEx:

HWND CreateToolbarEx ( HWND hwnd, DWORD ws, UINT wID,

int nBitmaps, HINSTANCE hBMInst,

UINT wBMID, LPCTBBUTTON lpButtons,

int iNumButtons, int dxButton,

int dyButton, int dxBitmap,

int dyBitmap, UINT uStructSize ) ;

Первые три параметра используются в вызове функции CreateWindow, который осуществляет функция CreateToolbarEx: hwnd — это описатель родительского окна, ws — флаги стиля окна, wID — идентификатор дочернего окна панели инструментов.

Следующие три параметра используются для загрузки ресурса битового образа, который содержит рисунки всех кнопок (множество изображений упакованы в строку в один битовый образ): nBitmaps — число изображений в битовом образе, hBMInst и wBMID идентифицируют ресурс битового образа для загрузки.

Параметр lpButtons — это указатель на массив элементов типа TBBUTTON, iNumButtons — задает число элементов в массиве. Каждый элемент TBBUTTON определяет битовый образ, идентификатор команды, тип кнопки, ее начальное состояние.

Размер каждой кнопки основывается на базе размеров изображения битового образа (dxBitmap, dyBitmap). Минимальная ширина кнопки равна dxBitmap+7 пикселей, минимальная высота кнопки — dyBitmap+7 пикселей. Существует возможность задать значения dxBitmap и dyBitmap для установки размеров кнопок больше минимальных. Если необходимости в этом нет, то значения dxBitmap и dyBitmap устанавливаются равными нулю.

Вариант панели инструментов основывается на размере структуры TBBUTTON, который задается последним параметром uStructSize, и должен равняться sizeof (TBBUTTON).

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

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