Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы программирования для информатиков и инженеров. Часть 2 Прикладное программирование в Windows.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
603.45 Кб
Скачать

Глава 11. Спины, ползунки и индикаторы процессов

 

В этой главе мы продолжим рассмотрение общих элементов управления. Будут рассмотрены спин (up-down control, spin, control), ползунок (track bar) и индикатор (progress bar).

 

11.1. Работа со спином

 

Во многих ситуациях Вы, несомненно, найдете удобным использование нового элемента управления, называемого спином (up-down control, spin control). Спин представляет собой не что иное, как особый вид линейки прокрутки (scroll bar). Он состоит из кнопок со стрелками, которые помещаются на концах линейки прокрутки, и не имеет полосы прокрутки, которая в линейках находится между этими кнопками. Если Вы уже работали с различными приложениями Windows, то, вероятно, заметили, что некоторые линейки прокрутки настолько малы, что полоса прокрутки для них просто не нужна. Достаточно только кнопок типа «вверх» и «вниз». Именно для подобных случаев разработчики Windows предусмотрели такой элемент управления, как спин. Как Вы вскоре увидите, работа со спином очень похожа на работу с линейкой прокрутки.

Существует два варианта использования спина:

1) он применяется как отдельная маленькая линейка прокрутки;

2) он может работать в сочетании с другим элементом управления, называемым в этом случае приятельским окном (buddy window).

 

В качестве приятельского окна чаще всего используется окно редак­тирования (edit box). Именно в этом случае в английском языке применяются термины «spin control» или «spinner window», во всех других случаях используется термин «up-down control». Практически все действия по управлению спином выполняются автоматически: это делает его очень простым и удобным элементом. Ниже приведены два примера работы со спином. В первом из них спин работает как небольшая линейка прокрутки, а во втором используется в сочетании с окном редактирования.

 

Создание спина. Для создания спина используется функция CreateUpDownControl():

 

HWND CreateUpDownControl(DWORD Style, int X, int Y,  

                         int Width, int Height,  

                         HWND hParent, int ID,

                         HINSTANCE hInst,

                         HWND hBuddy, int Max,

                         int Min, int StarPos);

 

Здесь параметр Style определяет стиль окна спина и должен содержать стандар­тные значения стилей WS_CHILD, WS_VISIBLE и WS_BORDERОн также может включать стили, представленные в приведенной ниже таблице 11.1.

 

Таблица 11.1

Стили «up-down control»

 

Стиль

Эффект

1

UDS_ALIGNLEFT

Спин размещается слева от приятельского окна

2

UDS_ALIGNRIGHT

Спин размещается справа от приятельского окна

3

UDS_ARROWKEYS

Разрешается использование клавиш со стрелками для изменения текущего значения спина

4

UDS_AUTOBUDDY

Определяется окно

5

UDS_HORZ

Создается горизонтальный спин (по умолчанию он располагается вертикально)

6

UDS_NOTHOUSANDS

Запрещается отображение запятой (для разделения триад) в больших числах (только для спинов с окнами редак­тирования)

7

UDS_SETBUDDYINT

Автоматически изменяется текст в приятельском окне при изменении позиции спина. Это позволяет автоматически отображать позицию спина в приятельском окне

8

UDS_WRAP

«Переворот» позиции спина при достижении граничного значения

 

Положение левого верхнего угла спина задается параметрами X и Y, а его ширина и высота – параметрами Width и HeightДескриптор родительского окна спина передается в параметре hParentИдентификатор спина задается параметром IDПараметр hInst задает дескриптор активного приложения. Дескриптор приятельского (buddy) окна передается в параметре hBuddyЕсли приятельское окно отсутствует, значение этого параметра должно быть NULL.

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

Функция CreateUpDownControl возвращает дескриптор элемента управления.

Сообщения спина. При нажатии какой-либо стрелки спина он посылает родительскому окну сообщение WM_VSCROLL. Дескриптор спина при этом передается в параметре lParam. По­скольку одновременно может существовать несколько элементов управления, посылающих сообщение WM_VSCROLL, дескриптор, передаваемый в lParam,позволяет установить, сообщение какого из этих элементов Вы обрабатываете в данный момент. Чтобы определить новую позицию спина, нужно, используя функ­цию SendMessage(), направить ему сообщение UDM_GETPOS. В этом случае функ­ция возвратит значение текущего положения спина.

Кроме UDM_GETPOS спин может принимать и обрабатывать другие сообщения; наиболее часто используемые из них приведены в таблице 11.2. Например, используя сообщение UDM_SETPOS, можно установить текущую позицию спина.

Таблица 11.2