Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
11
Добавлен:
14.05.2015
Размер:
159.23 Кб
Скачать

Счетчик

Счетчик является объектом класса CSpinButtonCtrl. Для обработки событий, связанных с нажатием кнопок счетчика следует добавить обработчик сообщенияUDN_DELTAPOS. Заготовка обработчика, создаваемая мастеромClassWizardимеет вид:

void CSdiDialog::OnDeltaposSpin1(NMHDR* pNMHDR, LRESULT* pResult)

{

NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;

// TODO: Add your control notification handler code here

*pResult = 0;

}

Здесь CSdiDialog– класс диалогового окна, созданный вSDI-проекте под именемSdi;NMHDR– структура, содержащая параметры события. Например, полеNMHDR.codeсодержит код, отражающий вид действия: щелчок мышью –NM_CLICK; двойной щелчок –NMDBLCLICKи ряд других.NM_UPDOWN– структура, содержащая изменения в состоянии счетчика. Основными полями этой структуры являются:int iPos– текущее значение счетчика;int iDelta– изменение текущего состояния счетчика (1 или –1).

Для вывода текущего значения счетчика необходимо установить элемент управления, позволяющий выводить информацию, например, текстовое поле. Пусть с текстовым полем связана компонента данных m_editтипаint. Тогда для вывода значения счетчика можно записать в обработчикеOnDeltaposSpin1:

UpdateData(TRUE);

m_edit = pNMUpDown->iPos;

UpdateData(FALSE);

Следует обратить внимание, что при щелчке по верхней стрелке счетчика, его значение уменьшается, а по нижней – увеличивается. Кроме того, по умолчанию нижняя граница счетчика равно 0, а верхняя – 100. Чтобы изменить эти параметры следует использовать функцию SetRange класса CSpinButtonCtrl. Для этого предварительно введем компоненту данныхm_spinклассаCSpinButtonCtrl.Кроме того, с помощью мастераClassWizardдобавим в класс диалогового окна обработчик сообщенияWM_INITDIALOG. Его необходимость обусловлена тем, что границы счетчика обычно определяются один раз. В данном случае мы связывает задание границ счетчика с созданием диалогового окна. В результате обработчик должен иметь вид:

BOOL CSdiDialog::OnInitDialog() {

CDialog::OnInitDialog();

m_spin.SetRange(10,250);

return TRUE;

}

В этом примере нижняя граница равна 10, а верхняя – 250. При этом щелчок по верхней кнопке счетчика будет увеличивать его значение.

Со счетчиком может быть объединено (ассоциировано) текстовое поле или список для вывода значений счетчика. Выше рассмотрен пример, в котором текстовое поле для вывода является независимым от счетчика объектом. При объединении счетчик и поле образуют единое целое. Для того, чтобы ассоциировать тестовое поле со счетчиком необходимо в окне свойств счетчика на вкладке Stylesустановить флажокAuto Buddy, а в спискеAlignmentвыбратьRightилиLeft.

Дополнительным условием объединения является то, что порядковый номер текстового поля в диалоговом окне должен быть на единицу меньше номера счетчика. Увидеть номера элементов в диалоговом окне можно через менюLayout/Tab Order. Если после этой команды прощелкать мышью по элементам управления, их нумерация будет соответствовать порядку выполнения щелчков.

На рис. 1 нумерация элементов соответствует их порядковым номерам. Поэтому счетчик (17) будет ассоциирован со списком (16). Следует обратить внимание на то, что счетчик на рис. 1 может быть расположен в любом месте окна и иметь любую высоту. При объединении он будет автоматически перенесен на список, а его высота будет выровнена по высоте списка. Однако, это происходит только при выполнении программы. На рис. 3 показан результат такого объединения.

Соседние файлы в папке ВУМИП_ЗО