- •Часть 2 (продолжение): Прикладное программирование в Windows
- •Глава 8. Виртуальное окно: работа с текстом
- •8.1. Оконные координаты, цвета, отображение строк
- •Кодировка rgb-значений
- •Размеры системных метрик
- •8.2. Виртуальное окно
- •Способы заполнения прямоугольной области
- •8.3. Изменение шрифтов
- •Макроимена распространенных шрифтов
- •8.4. Создание собственных шрифтов
- •Глава 9. Программирование графики
- •9.1. Логическая система координат
- •Рекомендуемый самый яркий состав цветов
- •9.2. Пиксели, линии, дуги, прямоугольники, эллипсы и секторы
- •9.3. Работа с перьями и кистями
- •Типы линий, создаваемых пером
- •9.4. Технология виртуального окна
- •9.5. Режимы отображения и области вывода
- •Текущий режим отображения (mappind mode)
- •Глава 10. Работа с панелями инструментов
- •10.1. Общие элементы управления
- •Общие элементы управления
- •10.2. Подключение и инициализация общих элементов управления
- •10.3. Работа с панелью инструментов
- •Начальные состояния кнопок панели инструментов
- •Стиль кнопки определяется (значения поля fsStyle)
- •Сообщения к панели инструментов
- •10.4. Создание растрового изображения для панели инструментов
- •10.5. Включение подсказок
- •Глава 11. Спины, ползунки и индикаторы процессов
- •11.1. Работа со спином
- •Стили «up-down control»
- •Сообщения, которые можно посылать спину
- •11.2. Создание спина с «приятельским» окном
- •11.3. Работа с ползунком
- •Значения стилей для ползунка
- •Перечень сообщений, которые можно посылать ползунку
- •Перечень нотификационных сообщения ползунка
- •11.4. Индикатор процесса
- •Управляющие сообщения индикатору
- •Глава 12. Многозадачность: процессы и потоки
- •12.1. Создание нового процесса (отдельной задачи)
- •Разрешенные значения поля dwFlags
- •12.2. Многопотоковые программы
- •12.3. Работа с несколькими потоками
- •12.4. Синхронизация процессов и потоков: семафоры
- •12.5. Обработка событий
- •Глава 13. Приемы программного управления вычислительным процессом
- •13.1. Использование функций Проводника Explorer для работы в файловой системе
- •Управляющая информация Проводника
- •Режимы обработки файлов
- •13.2. Создание собственных динамических библиотек (dll-файлов)
- •13.3. Работа с буфером обмена Clipboard
- •Функции подсистемы Clipboard
- •Свойства выделяемого блока памяти
- •Форматы и типы данных
- •Литература
11.3. Работа с ползунком
Один из самых интересных с точки зрения внешнего вида общих элементов управления – это ползунок (trackbar, иногда используется также термин slider control). Он имеет вид ползункового регулятора, используемого в различной электронной аппаратуре, в частности в стереосистемах. Ползунок состоит из указателя, движущегося вдоль шкалы. И хотя он выглядит иначе, чем линейка прокрутки, программа управляет им точно так же.
Применение ползунков очень эффективно в тех случаях, когда программа моделирует реальное физическое устройство. Например, если программа управляет графическим эквалайзером, ползунки идеально подходят для представления процесса регулировки частоты.
Для создания ползунка используется функция CreateWindow() либо CreateWindowEx(). Функция CreateWindowEx() отличается тем, что позволяет задать дополнительные значения стиля для создаваемого окна. В приведенном в этой главе примере программы создания ползунка дополнительные стили окна не требуются, но они могут оказаться необходимыми в реальных приложениях. Имя класса ползунка определяется макросом TRACKBAR_CLASS.
Стили окна ползунка. Создавая ползунок, можно задавать для него различные комбинации стилей. Значения стилей для ползунка сведены в таблице 11.3.
Таблица 11.3
Значения стилей для ползунка
№ |
Стиль |
Эффект |
1 |
TBS_AUTOTICKS |
Шкала ползунка отображается автоматически |
2 |
TBS_HORZ |
Ползунок отображается горизонтально (по умолчанию) |
3 |
TBS_VERT |
|
4 |
TBS_BOTTOM |
Шкала располагается над горизонтальным ползунком (по умолчанию) |
5 |
TBS_TOP |
Шкала располагается под горизонтальным ползунком |
6 |
TBS_LEFT |
Шкала располагается слева от вертикального ползунка |
7 |
TBS_RIGHT |
Шкала располагается справа от вертикального ползунка |
8 |
TBS_BOTH |
Шкала располагается с двух сторон от ползунка |
Чаще всего используется стиль TBS_AUTOTICKS, поскольку он определяет автоматическое отображение шкалы ползунка.
Передача сообщений ползунку. Сообщения ползунку посылаются с помощью функции SendMessage(), как и другим общим элементам управления, которые уже рассматривались. Перечень сообщений, которые можно посылать ползунку, приводится в таблице 11.4. Чаще других используются сообщения TBM_SETRANGE иTBM_SETPOS; с их помощью можно установить диапазон значений для ползунка и его текущую позицию. Однако эти параметры нельзя установить, если ползунок создан при помощи функции CreateWindow().
Таблица 11.4
Перечень сообщений, которые можно посылать ползунку
№ |
Сообщение |
Действие |
1 |
ТВМ_GETPOS |
Получение текущей позиции ползунка. wParam должен быть равен 0. lParam должен быть равен 0 |
2 |
TBM_GETRANGEMAX |
Получение верхней границы диапазона ползунка. wParam должен быть равен 0. lParam должен быть равен 0 |
3 |
TBM_GETRANGEMIN |
Получение нижней границы диапазона ползунка. wParam должен быть равен 0. lParam должен быть равен 0 |
4 |
ТВМ SETPOS |
Установка текущей позиции ползунка. wParam должен быть не равен 0, если нужно перерисовать ползунок. lParam задает новую позицию ползунка |
5 |
ТВМ_SETRANGE |
Установка нового диапазона значений для ползунка. wParam должен быть не равен 0, если ползунок нужно перерисовать. lParam содержит значения нового диапазона: значение верхней границы диапазона будет помещено в младшее слово, а нижней – в старшее |
6 |
ТВМ_SETRANGEMAX |
Установка верхнего предела диапазона значений ползунка. wParam должен быть не равен 0, если ползунок нужно перерисовать. lParam содержит новое значение верхнего предела диапазона значений |
7 |
ТВМ_SETRANGEMIN |
Установка нижнего предела диапазона значений ползунка. wParam должен быть не равен 0, если нужно перерисовать ползунок. lParam содержит новое значение нижнего предела диапазона значений |
Обработка нотификационных сообщении ползунка. При воздействии на ползунок он посылает своему родительскому окну сообщение WM_HSCROLL. Значение, определяющее характер воздействия, содержится в младшем слове параметра wParam. Это значение называется нотификационным сообщением. Дескриптор окна ползунка, направившего сообщение, содержится в lParam. В таблице 11.5 приведены некоторые наиболее часто используемые нотификационные сообщения ползунка.
Таблица 11.5
