Линейный регулятор (Slider Control)


     Когда пользователь должен ввести некоторую величину, не выходящую за пределы заданного диапазона используется линейный регулятор.

     Создайте SDI-приложение при помощи AppWizard. Назовите его Slider.
     Щелкните правой кнопкой мыши на имени класса CSliderView в окне ClassView и выберите в контекстном меню пункт Add Member Variable.
     В поле Variable type (тип переменной) укажите тип CSliderCtrl. В поле Variable Declaration (описание переменной) укажите имя переменной m_slider. В поле Access (доступ) установите флажок на поле Protected (защищенный). Нажмите на кнопку ОК.
     Теперь перейдем к формированию линейного регулятора.
     Все элементы управления формируются методом OnCreate() класса представления CSliderView. Эта функция обрабатывает сообщение Windows WM_CREATE. Чтобы включить этот метод в класс представления щелкните правой кнопкой мыши на имени класса CSliderView в коне ClassView и выберите в контекстном меню пункт Add Windows Message Handler (Добавить обработчик сообщений). Выберите WM_CREATE из списка слева и затем щелкните на кнопку Add and Edit (Добавить и редактировать). После комментария TODO вставьте строку:
     CreateSlider();

     Снова щелкните правой кнопкой мыши на имени класса CSliderView в окне ClassView и выберите в контекстном меню пункт Add Member Function (Добавить функцию член). Задайте тип возвращаемого значения в поле Function Type (тип функции) как void, а в поле Function Declaration (описание функции) введите объявление функции CreateSlider(). Метод должен быть объявлен открытым (public). Нажмите на кнопку ОК.
     Добавьте в эту функцию следующий код:

     void CSliderView::CreateSlider()
     {
          m_slider.Create(WS_CHILD | WS_VISIBLE | WS_BORDER | TBS_AUTOTICKS | TBS_BOTH | TBS_HORZ, CRect (100,40,300,80), this, IDC_SLIDER);
          m_slider.SetRange(1, 100, TRUE);
          m_slider.SetTicFreq(10);
          m_slider.SetLineSize(1);
          m_slider.SetPageSize(10);
     }


     В меню View запустите Resource Symbols... Откроется диалоговое окно Resource Symbols. Нажмите на кнопку New... В диалоговом окне New Symbol в поле Name введите IDC_SLIDER, поле Value оставьте по умолчанию. Нажмите на кнопку ОК, затем на кнопку Close.
     Откомпилируйте приложение и вы увидите линейный регулятор.

     Если у Вас все работает, то пора разобраться что мы написали.
     Функция CreateSlider() формирует элемент управления, вызывая его метод Create(), т.е. метод класса связанного с элементом управления.
     Эта функция имеет четыре параметра:
     Флаг стиля - это те же константы, которые используются для описания любого окна (ведь элемент управления есть окно специального вида).
     В данном случае нужно включить следующие константы: Как и для большинства элементов управления, флаги стиля задаются в виде комбинации символов констант стиля, в набор которых входят как константы, применимые для всех окон, так и специально объявленные для инкрементного регулятора в классе CSliderCtrl. В следующей таблице представлены эти специальные константы стиля:
TBS_AUTOTICKS Разрешает автоматическое формирование пометок.
TBS_BOTH Рисует пометки по обе стороны от щели регулятора
TBS_BOTTOM Рисует пометки ниже щели горизонтального регулятора
TBS_ENABLESELRANGE Позволяет выводить поддиапазоны регулятора
TBS_HORZ Рисует горизонтальный регулятор
TBS_LEFT Рисует пометки слева от щели вертикального регулятора
TBS_NOTICKS Рисует регулятор без пометок
TBS_RIGHT Рисует пометки справа от щели вертикального регулятора
TBS_TOP Рисует пометки над щелью горизонтального регулятора
TBS_VERT Рисует вертикальный регулятор

     После того как линейный регулятор сформирован, его нужно инициализировать. Класс CSliderCtrl имеет ряд функций-членов, которые позволяют инициализировать элемент управления и манипулировать им.

Функция Назначение
Create() Создает элемент управления.
ClearSel() Очищает выполненную ранее установку регулятора
ClearTics() Очищает установленные пометки регулятора
GetChannelRect() Считывает размер регулятора элемента управления
GetLineSize() Считывает установленное значение приращения параметра элемента управления в ответ на нажатие клавиши управления курсором "вверх" и "вниз".
GetNumTics() Считывает количество пометок элемента управления
GetPageSize() Считывает размер страницы элемента управления (значение приращения параметра при управлении клавишами <PgUP> и <PgDn>
GetPos() Считывает текущее значение параметра регулятора
GetRange() Считывает диапазон значений параметра элемента управления (максимальное и минимальное значения)
GetRangeMax() Считывает максимальное значение диапазона допустимых значений параметра элемента управления
GetRangeMin() Считывает минимальное значение диапазона допустимых значений параметра элемента управления
GetSelection() Считывает текущий выбор диапазона допустимых значений параметра элемента управления.
GetThumbRect() Считывает размер прямоугольника бегунка элемента управления
GetTic() Считывает положение ближайшей пометки элемента управления.
GetTicArray() Считывает положение всех пометок элемента управления
GetTicPos() Считывает координаты пометки элемента управления
SetLineSize() Устанавливает значение приращения параметра элемента управления в ответ на нажатие клавиши управления курсором "вверх" и "вниз"
SetPageSize() Устанавливает значение приращения параметра элемента управления в ответ на нажатие клавиши управления курсором <PgUP> и <PgDN>
SetPos() Устанавливает положение регулятора элемента управления
SetRange() Устанавливает диапазон значений параметра элемента управления (минимальное и максимальное и значение)
SetRangeMax() Устанавливает максимальное значение диапазона допустимых значений параметра элемента управления
SetRangeMin() Устанавливает минимальное значение диапазона допустимых значений параметра элемента управления
SetSelection() Устанавливает поддиапазон допустимых значений параметра элемента управления
SetThumbRect() Устанавливает размер прямоугольника бегунка элемента управления
SetTic() Устанавливает положение пометки элемента управления
SetTicFreq() Устанавливает интервал между пометками элемента управления
VerifyPos() Проверяет, допустимо ли заданное пользователем значение параметра

     Если Вы включили в свое приложение линейный регулятор, то Вы должны установить диапазон значений и интервал между пометками.
     Если предусматривается возможность управления регулятором с помощью клавиш, то необхлжимо установить значение приращения параметра элемента управления в ответ на нажатие клавиш управления курсором "вверх" и "вниз" и размер страницы элемента управления, при управлении клавишами <PgUP> и <PgDn>
     В нашем случае в функции SetRange() значение верхнего и нижнего пределов устанавливаются равными 0 и 100. Третий аргумент этой функции (типа BOOL) задает, нужно ли перерисовывать изображение регулятора после изменения заданного диапазона.

Содержание

Hosted by uCoz



Смотрите также:
Ищете корма для аквариумных рыб: корма для рыбок.



Hosted by uCoz