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




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

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

 

Во многих ситуациях Вы, несомненно, найдете удобным использование нового элемента управления, называемого спином (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»

 

Стиль Эффект
  UDS_ALIGNLEFT Спин размещается слева от приятельского окна
  UDS_ALIGNRIGHT Спин размещается справа от приятельского окна
  UDS_ARROWKEYS Разрешается использование клавиш со стрелками для изменения текущего значения спина
  UDS_AUTOBUDDY Определяется окно
  UDS_HORZ Создается горизонтальный спин (по умолчанию он располагается вертикально)
  UDS_NOTHOUSANDS Запрещается отображение запятой (для разделения триад) в больших числах (только для спинов с окнами редак­тирования)
  UDS_SETBUDDYINT Автоматически изменяется текст в приятельском окне при изменении позиции спина. Это позволяет автоматически отображать позицию спина в приятельском окне
  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



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-03-31 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: