Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Определение выбранной строки




Наша программа должна сообщать, какую строку списка выбрал пользователь. В этой ситуации комбинированное поле посылает программе сообщение CBN_SELCHANGE. Префикс CBN означает "Combo Box Notification", то есть "оповещение от комбинированного поля". Это семейство состоит из сообщений CBN_CLOSEUP, CBN_BLCLICK, CBN_DROPDOWN, CBN_EDITCHANGE, CBN_EDITUPDATE, CBN_ERRSPACE, CBN_KILLFOCUS, CBN_ SELCHANGE, CBN_SELENDCANCEL, CBN_SELENDOK и CBN_SETFOCUS. С помощью ClassWizard свяжите обработчик с сообщением CBN_SELCHANGE.

 ПОДСКАЗКА: Если вы забудете, какие сообщения управляющий элемент может посылать программе, найдите его в ClassWizard на вкладке Message Maps. Все возможные сообщения перечислены в списке Messages.

ClassWizard предлагает присвоить новому методу имя OnSelchangeCombol(). Подтвердите предложенное имя и откройте код метода:

void CCombosDIg::OnSelchangeCombol()

{

// TODO: добавьте код для обработки оповещений от элемента

        }       

Вызов этого метода означает, что пользователь выбрал из списка комбинированного поля новую строку; мы хотим сообщить об этом в текстовом поле, используя переменную m_text. Делается это так же, как и в случае со списком, следует вызвать метод GetCurSel(), после чего обновить содержимое текстового поля методом UpdateData():

void CCombosDIg::OnSelchangeCombol()

{            

m_combo.GetLBText (m_combo. GetCurSel (), m_text);

 UpdateData(false); 

ПОДСКАЗКА: Чтобы перехватить изменения, вносимые в содержимое текстовой части комбинированного поля, следует с помощью ClassWizard организовать в программе обработку сообщения CBN_EDITCHANGE.

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

Использование ползунков   

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

Когда пользователь перетаскивает бегунок мышью, программа должна выводить eгo новое положение по шкале от 1 до 100 (крайнее левое положение — 1, крайнее правое — 100).

1. С помощью AppWizard создайте программу sliders на базе диалогового окна.

2. Разместите в окне необходимые элементы — текстовое поле, две надписи и ползунок (восьмой сверху в левом столбце палитры). Ему присваивается идентификатор IDC_SLIDER1.

3. С помощью ClassWizard добавьте в программу новую переменную класса CSliderCtrl. Методы этого класса перечислены в табл. 8.3.

 Таблица 8.3. Методы класса CSlider

Метод Назначение
ClearSel Снимает текущее выделение
ClearTics Удаляет метки со шкалы
Create Создает ползунок как элемент Windows и связывает его с объектом CSliderCtrl
CSliderCtrl Создает объект класса CSliderCtrl
GetChannelRect Получает размеры канала ползунка
GetLineSize Получает размер строки1 для ползунка
GetNumTics Получает количество меток на шкале
GetPageSize Получает размер страницы для ползунка
GetPos Получает текущую позицию ползунка
GetRange Получает минимальное и максимальное значения шкалы
GetRangeMax Получает максимальное значение шкалы
GetRangeMin Получает минимальное значение шкалы
GetSelection Получает текущий выделенный интервал
GetThumbRect Получает размеры бегунка
GetTic Возвращает позицию заданной метки шкалы
GetTicArray Возвращает массив с позициями меток шкалы
GetTicPos Получает позицию заданной метки в системе клиентских координат
SetLineSize Задает размер линии для ползунка
SetPageSize Задает размер страницы для ползунка
SetPos Задает текущую позицию ползунка
SetRange Задает минимальное и максимальное значения шкалы
SetRangeMax Задает максимальное значение шкалы
SetRangeMin Задает минимальное значение шкалы
SetSelection Задает текущий выделенный интервал
SetTic Задает позицию метки шкалы
SetTicFreq Задает частоту меток на шкале ползунка
VerifyPos Проверяет, принадлежит ли текущая позиция бегунка заданному интервалу

Созданный ползунок необходимо инициализировать.

Инициализация ползунка

При создании ползунка необходимо задать его интервал. Эта величина определяет возможные позиции бегунка от крайнего левого до крайнего правого положения. В нашем примере ползунок может принимать значения от 1 до 100. Эти значения задаются методами SetRangeMin() и SetRangeMax() класса CSliderCtrl (второй параметр этих методов показывает, нужно ли перерисовывать ползунок после изменения интервала; передавая значение false, мы отказываемся от перерисовки):

Размером строки называется минимальный размер смещения бегунка, размером страницы — размер смещения при щелчке на шкале слева или справа.

BOOL CSlidersDIg::OnInitDialog()

{

        CDialog::ОnInitDialog();

        m_slider.SetRangeMin(1, false);

        m_slider.SetRangeMax(100, false);

        // Добавить команду "About..." в системное меню.

}

Чтобы вывести в текстовом поле исходное состояние ползунка (бегунок находится в позиции 1), следует связать переменную с содержимым текстового поля и присвоить ей значение "1":

BOOL CSlidersDIg::OnInitDialog()

{

        CDialog::ОnInitDialog();

        m_slider.SetRangeMln(1, false);

        m_slider.SetRangeMax(100, false);

m_text = "1";

UpdateData(false);

// Добавить команду "About..." в системное меню.

}

Ползунок готов к работе, но возникает вопрос — как узнать о перемещении пользователем бегунка?  

ПОДСКАЗКА: Ползунки могут быть как горизонтальными, так и вертикальными. Ориентация задается в окне Properties редактора диалоговых окон (щелкните на ползунке правой кнопкой мыши и вы6ерите команду Properties в контекстном меню).   










Последнее изменение этой страницы: 2018-04-12; просмотров: 294.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...