Поделиться через


Сведения о элементах управления "Вверх вниз"

Элемент управления вверх — это пара кнопок со стрелками, которые пользователь может щелкнуть, чтобы увеличить или уменьшить значение, например положение прокрутки или число, отображаемое в элементе управления-компаньоне (называемое окном приятеля).

Для пользователя элемент управления вверх и его приятельное окно часто выглядят как один элемент управления. Вы можете указать, что элемент управления вверх-вниз автоматически позиционируется рядом с его приятельным окном и что он автоматически устанавливает подпись окна приятеля в текущее положение. Например, можно использовать элемент управления "вверх вниз" с элементом управления редактирования, чтобы запрашивать у пользователя числовые входные данные. На следующем рисунке показан элемент управления "Вверх вниз" с элементом управления редактированием в качестве своего приятеля, сочетание, которое иногда называется элементом управления спиннером.

screen shot showing a short, wide rectangular control with up and down arrows at the right edge

В этом разделе рассматриваются следующие разделы.

Стили элементов управления вверх вниз

Используя стили окон, можно управлять характеристиками элемента управления вверх вниз, например, как он позиционирует себя относительно своего приятельского окна, задает ли текст своего приятельского окна и обрабатывает ли он клавиши СТРЕЛКА ВВЕРХ и СТРЕЛКА ВНИЗ.

Элемент управления вверх вниз с UDS_ALIGNLEFT или UDS_ALIGNRIGHT стилем соответствует левому или правому краю своего приятельского окна. Ширина окна приятеля уменьшается, чтобы вместить ширину элемента управления вверх вниз.

Элемент управления вверх вниз с стилем UDS_SEТБ UDDYINT задает подпись своего окна при изменении текущей позиции. Элемент управления вставляет разделитель тысяч между каждые три цифры десятичной строки, если не указан стиль UDS_NOTHOUSANDS . Если окно "Приятель" является полем списка, элемент управления up-down задает текущий выбор вместо его подпись.

Вы можете указать стиль UDS_ARROWKEYS , чтобы предоставить интерфейс клавиатуры для элемента управления вверх вниз. Если этот стиль указан, элемент управления обрабатывает клавиши со стрелками вверх и вниз. Элемент управления также подклассирует окно приятеля, чтобы он смог обработать эти ключи, когда окно приятеля имеет фокус.

Если вы используете элемент управления вверх вниз для горизонтальной прокрутки, можно указать стиль UDS_HORZ . Этот стиль приводит к тому, что стрелки элемента управления вверх вниз указывают налево и вправо, а не вверх и вниз.

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

Положение и ускорение

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

Чтобы получить текущую позицию элемента управления вверх вниз, используйте сообщение UDM_GETPOS . Для элемента управления вверх вниз с окном приятеля текущее положение — это число в подпись окна приятеля. Так как подпись, возможно, изменились (например, пользователь, возможно, отредактировал текст элемента управления редактирования), элемент управления up-down извлекает текущую подпись и обновляет текущую позицию соответствующим образом.

Подпись окна приятеля может быть десятичной или шестнадцатеричной строкой в зависимости от базы радикса (то есть базовой 10 или 16) элемента управления вверх вниз. Базу радикса можно задать с помощью сообщения UDM_SEТБ ASE и получить базу радикса с помощью сообщения UDM_GEТБ ASE.

Сообщение UDM_SETPOS задает текущее положение окна приятеля. Обратите внимание, что в отличие от полосы прокрутки, элемент управления вверх вниз автоматически изменяет текущее положение при щелчке стрелков вверх и вниз. Поэтому приложению не нужно задавать текущую позицию при обработке сообщения WM_VSCROLL или WM_HSCROLL .

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

Вы можете управлять скоростью изменения позиции, когда пользователь удерживает кнопку со стрелкой, задав ускорение элемента управления вверх вниз. Ускорение определяется массивом структур UDACCEL . Каждая структура задает интервал времени и количество единиц, по которым следует увеличивать или уменьшать в конце этого интервала. Чтобы задать ускорение, используйте сообщение UDM_SETACCEL . Чтобы получить сведения об ускорениях, используйте сообщение UDM_GETACCEL .

Обработка сообщений элементов управления вверх по умолчанию

В этом разделе описаны стандартные сообщения Windows, обработанные элементом управления "Вверх вниз".

Message Обработка выполнена
WM_CREATE Выделяет и инициализирует структуру частных данных и сохраняет адрес в виде данных окна.
WM_DESTROY Освобождает данные, выделенные во время обработки WM_CREATE.
WM_ENABLE Отменяет окно.
WM_KEYDOWN Изменяет текущую позицию в случае клавиши СТРЕЛКА ВВЕРХ или СТРЕЛКА ВНИЗ.
WM_KEYUP Завершает изменение позиции.
WM_LBUTTONDOWN Записывает мышь. Если приятельное окно является элементом управления редактированием или полем списка, он задает фокус в окне приятеля. Если указатель мыши переключится на кнопку вверх или вниз, он начинает изменять положение и задает таймер.
WM_LBUTTONUP Завершает изменение позиции и освобождает запись мыши, если элемент управления вверх вниз захватил мышь. Если приятельное окно является элементом управления редактирования, он выбирает весь текст в элементе управления редактирования.
WM_PAINT Рисует элемент управления вверх вниз. Если параметр wParam не имеет значения NULL, элемент управления предполагает, что значение является HDC и краской с помощью этого контекста устройства.
WM_TIMER Изменяет текущую позицию, если мышь удерживается на кнопке, и достаточный интервал истек.