Лабораторная работа №15 по VisualC++ 2005
"Работа с ползунками при программировании на C++ стандарта ISO/ANSI"
Составил доц. Авраменко В.В.
1 Постановка задачи
Создать диалоговое окно. Разместить в нем ползунок, текстовое поле и надписи: «Перемістити бігунок» и «Положення бігунка» соответственно над ползунком и над текстовим полем. Ползунок содержит небольшой бегунок, перемещаемый пользователем вдоль шкалы. Когда пользователь перетаскивает бегунок мышью, программа должна выводить его новое положение по шкале от 1 до 100 (крайнее левое положение- 1, крайнее правое- 100).
2 Общие указания
Ползунок- управляющий элемент, который обычно применяется для ввода числовых величин- например интенсивности цвета (от 0 до 255). Это объект класса CSlider. С методами этого класса можно познакомиться в Help а также в [1] с.316-317.
2.1 Последовательность действий при создании приложения
1)
Start Page.
Create:Project.
Выбрать тип проекта (Project Types) MFC, шаблон- MFC Application,
Name- slider1.
2) В окне Application Type выбрать Dialog based. Снять флажок Use Unicode Libraries. Щёлкнуть на Finish.
3) Выбрать вкладку Resource View (Просмотр ресурсов). Раскрыть папку Dialog . Дважды щелкнуть на IDD_SLIDER1_DIALOG. Появится диалоговое окно. Вытереть в нем текст TODO…….
4) В диалоговом окне из Toolbox разместить управляющие элементы: Slider Control (ползунок) и ab| Edit Control (текстовое окно). Над ползунком разместить надпись «Перемістити бігунок», а над текстовым окном- «Положення бігунка».
5) В класс Cslider1Dlg добавим элементы данных , соответствующие ползунку и текстовому окну. Как обычно, надо в диалоговом окне выделить ползунок, вызвать контекстное меню, выбрать в нем Add Variable. В появившемся окне установить доступ private, тип по умолчанию CSliderCtrl, имя даем m_slider1. Для текстового окна введем private CEdit m_edit1.
6) Инициализируем ползунок. Как и в других случаях инициализация выполняется в методе OnInitDialog() но теперь уже класса Cslider1Dlg. Необходимо задать интервал значений положения ползунка (1- 100). Для этого используются методы SetRangeMin() и SetRangeMax() класса CSlider. В каждом из них по два праметра. Первый задает числовое значения предела снизу или сверху, а второй принимает значения true (нужно перерисовывать ползунок после изменения интервала) или false (отказываемся от перерисовки). Чтобы вывести в текстовом поле исходное положение ползунка (позиция 1), как обычно, используется метод для вывода в текстовое окно SetWindowTextA(). Ниже приведена часть метода OnInitDialog().где отображена инициализация ползунка.
BOOL Cslider1Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_slider1.SetRangeMin(1,false);
m_slider1.SetRangeMax(100,false);
m_edit1.SetWindowTextA("1");
// Add "About..." menu item to system menu.
return TRUE; // return TRUE unless you set the focus to a control
}
7) Запрограммируем обработку сообщений от ползунка. При перемещении бегунка элемент посылает сообщения WM_HSCROLL при горизонтальном перемещении или WM_VSCROLL для вертикальных ползунков.Пусть ползунок будет горизонтальным. Для выбора ориентации ползунка нужно его выделить, вызвать контекстное меню и в нем выбрать properties. В поле orientation выбираем horizontal.Чтобы создать функцию- обработчик события WM_HSCROLL нужно выделить всё диалоговое окно, вызвать контекстное меню, выбрать properties.В верхней части окна щелкнуть по значку messages. В открывшемся списке обрабатываемых событий выбирать WM_HSCROLL.В появившемся окошке нужно раскрыть список. В нем выбрать строку <Add>OnHScroll и щелкнуть по ней. В результате в файле slider1.cpp появится заготовка для обработчика.
Ниже приведен текст заготовки
void Cslider1Dlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.