Лекция 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++ |