О элементах управления TrackBar

TrackBar — это окно, содержащее ползунок (иногда называемый бегунком) в канале и необязательные деления. Когда пользователь перемещает ползунок с помощью мыши или клавиш направления, ползунок отправляет сообщения уведомления для указания на изменение.

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

снимок экрана с меткой линейки с метками на концах для медленных и быстрых

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

Можно создать линейку с помощью функции CreateWindowEx , указав класс окна _ класса TrackBar . После создания значения TrackBar можно использовать сообщения TrackBar для установки и получения многих его свойств. Изменения, которые можно внести, включают задание минимальных и максимальных позиций для ползунка, рисование делений, задание диапазона выбора и изменение положения ползунка.

Диапазон выбора

При создании значения TrackBar с использованием стиля TBS _ енаблеселранже можно указать диапазон выбора. Значение TrackBar выделяет диапазон выбора и отображает треугольные деления в начале и в конце, как показано на следующем рисунке.

снимок экрана элемента TrackBar с выделенным диапазоном

Диапазон выбранных значений TrackBar не влияет на его функциональность. Приложение может реализовать диапазон. Это можно сделать одним из следующих способов:

  • Используйте диапазон выбора, чтобы предоставить пользователю возможность задать максимальное и минимальное значения для некоторых параметров. Например, пользователь может переместить ползунок в положение, а затем нажать кнопку с надписью "Макс.". Затем приложение задает диапазон выбора для отображения значений, выбранных пользователем.
  • Ограничьте перемещение ползунка до предварительно определенного поддиапазона внутри элемента управления, обрабатывая уведомление WM _ HSCROLL или WM _ VSCROLL и запрещая перемещение за пределы диапазона выбора. Это можно сделать, например, если диапазон значений, доступных пользователю, может измениться из-за других вариантов, сделанных пользователем, или в соответствии с доступными ресурсами.

Сообщения TrackBar

Логические единицы TrackBar — это набор смежных значений, которые может представлять линейка. Обычно они определяются путем указания диапазона возможных значений с сообщением ТБМ _ SETRANGE сразу после создания TrackBar. Приложения могут динамически изменять диапазон с помощью ТБМ _ SETRANGE, ТБМ _ сетранжемаксили ТБМ _ сетранжемин.

Чтобы получить положение ползунка (то есть значение, выбранное пользователем), используйте сообщение ТБМ _ жетпос . Чтобы задать положение ползунка, используйте сообщение ТБМ _ сетпос .

Значение TrackBar автоматически отображает деления в начале и в конце, если не указан стиль TBS. _ (в редакторе ресурсов Microsoft Visual Studio это означает, что для свойства Tick marks задано значение False.) Можно использовать стиль TBS _ автотактов , чтобы автоматически отображать дополнительные деления с регулярными интервалами по TrackBar. По умолчанию параметр TrackBar _ автоимпульсов TBS отображает деление на каждое приращение диапазона TrackBar. Чтобы указать другой интервал для автоматических делений, отправьте сообщение ТБМ _ сеттикфрек на TrackBar. Например, это сообщение можно использовать для вывода только 10 делений в диапазоне от 1 до 100.

Чтобы задать расположение одной деления, отправьте сообщение ТБМ _ Set . Значение TrackBar поддерживает массив значений типа DWORD, в котором хранится расположение каждого деления. Массив не включает в себя первый и последний деления, автоматически создаваемые TrackBar. Индекс в этом массиве можно указать при отправке сообщения _ жеттик ТБМ для получения позиции соответствующего деления. Кроме того, можно отправить сообщение ТБМ _ жетптикс , чтобы получить указатель на массив. Число элементов в массиве равно двум меньшему значению счетчика тактов, возвращаемому сообщением ТБМ _ жетнумтикс . Это связано с тем, что число, возвращаемое функцией ТБМ _ жетнумтикс , включает первый и последний деления, которые не включены в массив. Чтобы получить физическое расположение деления, в клиентских координатах окна TrackBar отправьте сообщение ТБМ _ жеттикпос . Сообщение ТБМ _ клеартикс удаляет все деления TrackBar, кроме первого и последнего.

Размер линии TrackBar определяет, на какое расстояние ползунок перемещается в ответ на ввод с клавиатуры клавишами со стрелками, например стрелка вправо или стрелка вниз. Чтобы получить или задать размер линии, отправьте сообщения ТБМ _ Жетлинесизе и ТБМ _ сетлинесизе . _ _ При нажатии клавиш со стрелками значение TrackBar также отправляет коды уведомления ЛИНЕДОВН и ТБ в свое родительское окно.

Размер страницы TrackBar определяет, на какое расстояние ползунок перемещается в ответ на ввод с клавиатуры, например Клавиша PAGE UP или PAGE DOWN, или ввод с помощью мыши, например щелчки в канале TrackBar. Чтобы получить или задать размер страницы, отправьте сообщения ТБМ _ и ТБМ _ SETPAGESIZE . Значение TrackBar также отправляет _ коды уведомлений PageUp и ТБ _ PageDown в родительское окно при получении ввода с клавиатуры или с помощью мыши для прокрутки страницы. Дополнительные сведения см. в статье уведомления опараметре TrackBar.

Приложение может отправить сообщения для получения измерений TrackBar. Сообщение ТБМ _ жетсумбрект извлекает ограничивающий прямоугольник для ползунка. Сообщение ТБМ _ жетсумбленгс получает длину ползунка. Сообщение ТБМ _ жетчаннелрект извлекает ограничивающий прямоугольник для канала TrackBar, который является областью, в которую перемещается ползунок. Он содержит выделение при выборе диапазона. Если значение TrackBar имеет стиль _ FIXEDLENGTH TBS , можно отправить сообщение _ сетсумбленгс ТБМ , чтобы изменить длину ползунка.

Вы получаете или устанавливаете диапазон выбора, отправляя сообщения на TrackBar. Используйте сообщение ТБМ _ сетсел , чтобы установить начальную и конечную позиции для выделения. Чтобы установить только начальную или только конечную точку выделения, отправьте сообщение ТБМ _ Сетселстарт или ТБМ _ сетселенд . Чтобы получить начальную или конечную позицию диапазона выбора, отправьте сообщение ТБМ _ Жетселстарт или ТБМ _ жетселенд . Чтобы очистить диапазон выбора и восстановить значение TrackBar в исходный диапазон, отправьте сообщение ТБМ _ клеарсел .

Примечание

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

Сообщения уведомления о прокрутки

Значение TrackBar уведомляет свое родительское окно действий пользователя, отправляя родительское сообщение WM _ HSCROLL или WM _ VSCROLL . Элемент TrackBar с стилем TBS _ горизонтали отправляет сообщения WM _ HSCROLL . Ползунок с _ вертикальным стилем TBS отправляет сообщения WM _ VSCROLL . Слово низкого порядка в параметре wParam WM _ HSCROLL или WM _ VSCROLL содержит код уведомления. Для _ кодов уведомлений сумбпоситион и ТБ _ сумбтракк в высоком порядке в параметре wParam указывается положение ползунка. Для всех остальных кодов уведомлений слово в высоком порядке имеет нулевое значение; Отправьте сообщение ТБМ _ жетпос , чтобы определить положение ползунка. Параметр lParam является маркером для TrackBar.

Система отправляет _ коды верхнего уровня ТБ, ТБ _ линедовн, ТБ _ и ТБ, _ только когда пользователь взаимодействует с TrackBar с помощью клавиатуры. _Коды уведомлений ТБ сумбпоситион и ТБ _ сумбтракк отправляются только тогда, когда пользователь использует мышь. _Коды уведомлений ендтракк, ТБ _ PageDown и ТБ _ PageUp отправляются в обоих случаях. В следующей таблице перечислены коды уведомлений TrackBar и события (виртуальные ключевые коды или события мыши), которые вызывают отправку уведомлений по кодам виртуальных ключей.

Код уведомления Причина отправлена
_Нижняя ТБ VK _ конец
_ЕНДТРАКК ТБ WM _ Клавиша вверх (пользователь отпускает ключ, который отправил соответствующий виртуальный код клавиши)
_ЛИНЕДОВН ТБ VK _ RIGHT или VK _ Down
Разметка _ ТБ VK _ LEFT или VK _ up
_PageDown ТБ VK _ Далее (пользователь щелкнул канал ниже или справа от ползунка)
_PageUp ТБ VK _ РАНЕЕ (пользователь щелкнул канал выше или слева от ползунка)
_СУМБПОСИТИОН ТБ WM _ ЛБУТТОНУП после _ кода уведомления СУМБТРАКК в ТБ
_СУМБТРАКК ТБ Перемещение ползунка (Пользователь переместил ползунок)
_верхний ТБ _Домашняя страница VK

Обработка сообщений TrackBar по умолчанию

В этом разделе описывается обработка сообщений окна, выполняемая с помощью TrackBar.

Сообщение Обработка выполнена
WM _ каптуречанжед Прерывает таймер, если он был задан во время обработки _ лбуттондовн WM , и при необходимости отправляет в ТБ _ код уведомления сумбпоситион. Он всегда отправляет _ ендтракк код уведомления ТБ.
_Создание WM Выполняет дополнительную инициализацию, например Задание размера строки, размера страницы и частоты деления на значения по умолчанию.
WM _ destroy Освобождает ресурсы.
_Включение WM Перерисовывает окно TrackBar.
WM _ ерасебкгнд Стирает фон окна, используя текущий цвет фона для TrackBar.
WM _ жетдлгкоде Возвращает значение ДЛГК _ вантарровс.
WM _ KeyDown Обрабатывает клавиши направления и отправляет коды уведомлений ТБ (Top, ТБ), _ _ _ PageUp, ТБ _ PageDown, ТБ _ и ТБ _ линедовн, соответственно.
WM _ KEYUP Отправляет ТБ _ кода уведомления ендтракк, если ключ был одним из ключей направления.
WM _ киллфокус Перерисовывает окно TrackBar.
WM _ лбуттондовн Устанавливает фокус и захват мыши на TrackBar. При необходимости устанавливается таймер, определяющий скорость перемещения ползунка в сторону курсора мыши, когда пользователь удерживает кнопку мыши в окне.
WM _ лбуттонуп Освобождает захват мыши и прерывает таймер, если он был задан во время обработки _ лбуттондовн WM . При необходимости он отправляет в ТБ _ код уведомления сумбпоситион. Он всегда отправляет _ ендтракк код уведомления ТБ.
WM _ MOUSEMOVE Перемещает ползунок и отправляет _ код уведомления СУМБТРАКК ТБ при отслеживании мыши (см. _ таймер WM).
WM _ Paint Закрашивает линейку. Если параметр wParam не равен NULL, то элемент управления предполагает, что значение является HDC и рисует его с помощью контекста устройства.
WM _ SETFOCUS Перерисовывает окно TrackBar.
_Размер WM Задает размеры TrackBar, удаляя ползунок, если недостаточно места для его вывода.
_таймер WM Получает положение указателя мыши и обновляет положение ползунка. (Она получается, только если пользователь перетаскивает ползунок.)
WM _ вининичанже Инициализирует измерения ползунка.

Подсказки для TrackBar

Значение TrackBar, созданное с помощью стиля _ подсказок TBS , имеет элемент управления ToolTip по умолчанию. Подсказка остается видимой и отображает текущее значение, когда пользователь перетаскивает ползунок с помощью мыши.

Можно назначить новый элемент управления ToolTip для TrackBar, отправив сообщение ТБМ _ сеттултипс . Чтобы получить маркер для назначенного элемента управления ToolTip, используйте сообщение ТБМ _ .