Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VC Лекции PDF / VC 17 Лек Дополнительные элементы управления.pdf
Скачиваний:
34
Добавлен:
15.02.2015
Размер:
251.36 Кб
Скачать

Лекция 17

Дополнительные элементы управления

3

Пример получения значений параметров акселераторов

В приведённом ниже примере пользователь нажимает кнопку, и программа выводит на экран в окнах сообщения информацию об акселераторах, определённых в спин-кнопке. Для хранения информации об акселераторах используется динамический массив структур типа UDACCEL.

void CSpinDemoDlg :: OnGetAccel ( )

{

int m = 5 ; // размер динамического массива акселераторов UDACCEL* pAccel = new UDACCEL [ m ] ; // создаёт динамический массив акселераторов

int n = m_spin.GetAccel ( n , pAccel ) ;

// определяет количество акселераторов

 

// и получает их параметры

CString number , elapse , step , title = "Параметры акселератора"; number.Format ( "Количество акселераторов \t%i \n" , n ) ; MessageBox ( number , title , MB_ICONINFORMATION ) ;

for ( int i =0 ; i < n ; i++ ) // для всех акселераторов

{

number.Format ( "Акселератор №\t%i\n", i ) ;

elapse.Format ( "Время ожидания\t%i сек\n", pAccel [ i ].nSec ) ; step.Format ( "Шаг изменения \t%i \n", pAccel [ i ].nInc ) ;

MessageBox ( number + elapse + step , title , MB_ICONINFORMATION ) ;

}

delete [ ] pAccel ; // удаляет динамический массив акселераторов

}

Пример установки значений параметров акселераторов

В приведённом ниже примере пользователь нажимает кнопку, и устанавливает 4 акселератора для спин-кнопке с новыми значениями параметров. Для хранения информации об акселераторах используется динамический массив структур типа UDACCEL.

void CSpinDemoDlg ::OnSetAccel ( )

{

int n = 4 ;

 

 

 

// размер динамического массива акселераторов

UDACCEL* pAccel = new UDACCEL [ n ] ;

// создаёт динамический массив акселераторов

for ( int i = 0 ; i < n ; i++ )

 

 

// для всех акселераторов

pAccel [ i ].nSec = i ;

 

 

// устанавливает время ожидания

pAccel [ 0

].nInc = 1 ;

pAccel [ 1

].nInc = 10 ; // устанавливает шаг изменения позиции

pAccel [ 2

].nInc = 100 ;

pAccel [ 3

].nInc = 1000 ;

m_spin.SetAccel ( n , pAccel ) ;

 

// устанавливает значения параметров акселераторов

delete [ ] pAccel ;

 

 

// удаляет динамический массив акселераторов

}

ПОЛЗУНОК

Ползунок – это линейка с бегунком. Линейка может содержать деления. Данный элемент предназначен для выбора дискретных значений в установленном интервале. Иерархия классов до класса CSliderCtrl представлена на рисунке.

CObject

CCmdTaget

CWnd

CSliderCtrl

Если этот элемент управления создается не в шаблоне блока диалога, то необходимо воспользоваться функцией Create ( ).

Выжол Ю.А.

Программирование на Visual C++

Лекция 17

Дополнительные элементы управления

4

Пример использования ползунка

Рассмотрим пример, который демонстрирует основные приёмы использования ползунка со значениями свойств, заданными по умолчанию. Диалоговое окно IDD_SLIDERDEMO_DIALOG содержит текстовое поле IDC_EDIT и элемент управления IDC_SLIDER, с помощью которого пользователь может изменить значение, отображаемое в текстовом поле в диапазоне от 0 до 100. Пользователь также может ввести значение непосредственно в текстовое поле. Если ползунок имеет фокус, то его значение также можно изменить с помощью клавиш управления курсором с шагом 1 и с помощью клавиш PageUp и PageDown с шагом 20.

Для использования ползунка необходимо создать с помощью ClassWizard ассоциированную переменную типа int, которая хранит положение ползунка.

Код, включённый в класс CSliderDemoDlg, имеет вид:

class CSliderDemoDlg : public CDialog

{

public :

int m_spin ;

// переменная ассоциированная с ползунком IDC_SLIDER

int m_edit ;

// переменная ассоциированная с текстовым полем IDC_EDIT

} ;

 

 

void CSliderDemoDlg :: DoDataExchange ( CDataExchange* pDX )

{

 

 

DDX_Slider ( pDX , IDC_SLIDER , m_slider ) ;

// связывает ползунок у IDC_SLIDER

DDX_Text ( pDX , IDC_EDIT , m_edit ) ;

// с переменной m_spin

// связывает текстовое поле IDC_EDIT

DDV_MinMaxInt ( pDX , m_edit , 0 , 100) ;

// с переменной m_edit

// определяет диапазон допустимых

}

 

// значений переменной m_edit

 

 

// функция обработки события изменения положения ползунка IDC_SLIDER

void CSliderDemoDlg :: OnCustomDrawSlider(NMHDR* pNMHDR, LRESULT* pResult)

{

UpdateData ( true ) ;

// считывает данные из элементов управления

m_edit = m_slider ;

// в ассоциированные переменные

// передаёт данные из ползунка в текстовое поле

UpdateData ( false ) ;

// передаёт значение ассоциированных переменных

}

// в элементы управления

 

Функции класса CSliderCtrl

Для использования ползунка необходимо создать с помощью ClassWizard ассоциированную переменную типа CSliderCtrl. Этот объект хранит положение ползунка. Для операций с ползунком в классе CSpinButtonCtrl определены следующие функции:

SetPos ( )

устанавливает положение элемента управления;

GetPos ( )

возвращает положение элемента управления;

SetRange ( )

устанавливает диапазон значений;

GetRange ( )

получает диапазон значений;

SetRangeMax ( )

устанавливает максимальное положение бегунка;

GetRangeMax ( )

возвращает максимальное положение бегунка;

SetRangeMin ( )

устанавливает минимальное положение бегунка;

GetRangeMin ( )

возвращает минимальное положение бегунка;

SetLineSize ( )

устанавливает величину единичных перемещений (клавиши управления курсо-

GetLineSize ( )

ром);

возвращает величину единичных перемещений;

Выжол Ю.А.

Программирование на Visual C++

Лекция 17

Дополнительные элементы управления

5

SetPageSize ( )

устанавливает величину страничных перемещений (клавиши PageUp и

GetPageSize ( )

PageDown);

 

Получить величину страничных перемещений;

 

GetLineSize ( )

Получить величину единичных перемещений;

SetLineSize ( )

Установить величину единичных перемещений;

GetPageSize ( )

Получить величину страничных перемещений;

SetPageSize ( )

Установить величину страничных перемещений;

GetSelection ( )

Получить диапазон текущего выбора;

SetSelection ( )

Установить диапазон текущего выбора;

ClearSel ( )

Очищает текущий выбор бегунка;

GetChannelRect ( ) Получить размер элемента управления;

GetThumbRect ( )

Получить размер бегунка;

GetTicArray ( )

Получить положение всех меток;

GetTic ( )

Получить положение указанной метки;

SetTicFreq ( )

Задать частоту отображения меток;

ClearTics ( )

Удаление меток;

VerifyPos ( )

Проверяет допустимость положения бегунка. Эту функцию нельзя использовать в

GetNumTic ( )

обработчике уведомлений;

Получить количество меток.

Выжол Ю.А.

Программирование на Visual C++