Программирование под Win32


Программирование для Windows с помощью библиотеки объектов OWL - стр. 87


В конструкторе класса MyWindow создаются объекты для окна-панели, двух динамических элемен­тов управления классов THSlider и TScrollBar (см. рис. 28.5), а также для трех статических элементов класса TStatic. Для всех объектов указываются их идентификаторы и расположение в главном окне, а для статических элементов - выводимый текст. Ползунок и линейка прокрутки пока получают настройки по умолчанию, которые, скорее всего, не соответствуют тому, что нужно нам в данном конкретном случае.

Настройка динамических элементов управления осуществляется в замещающей функции SetupWin-dow(). Здесь прежде всего необходимо вызвать исходную, замещенную функция класса TWindow, кото­рая создает все порожденные окна (в нашем случае - дочернее окно и элементы управления), для кото­рых в конструкторе класса MyWindow мы создали OWL-объекты. Если позабыть вызвать замещенную функцию SetupWindow(), главное окно останется пустым. Далее вызовом соответствующих функций классов THSlider и TScrollBar устанавливаются требуемые настройки приспособлений - пределы и шаг шкал, а также начальные положения ручек. Наконец, прямым вызовом функций откликов UpdateFre-quency() и UpdatePhase() выполняется начальное снятие значений с элементов управления и формирова­ние изображения в главном окне.


276                                                                                                                                  Глава 29

Функции откликов активизируются при выполнении пользователем каких-либо манипуляций с эле­ментами управления. В них вызовом OWL-функции GetPosition() для соответствующего элемента снима­ется текущее положение его ручки, функцией wspintf() формируется текущее содержимое надписи, и функцией TStatic::SetText() новая надпись выводится в дочернее окно, соответствующее статическому объекту. Для того, чтобы изменения отобразились на экране, вызывается функция Invalidate() для главно­го окна.

Помимо описанных действий, общих для обеих функций отклика, при входе в функцию UpdateFre-quency() выполняется отбраковка двух кодов нотификации - SB_THUMBTRACK и SB_ENDSCROLL. В результате отбрасываются сообщения от ползунка, возникающие, когда пользователь тащит его ручку, а также сообщения, поступающие при отпускании клавиши мыши. Игнорирование этих сообщений замет­но уменьшает мелькание экрана, который перерисовывается только в моменты окончательного выбора нового положения ручки ползунка.




Начало  Назад  Вперед



Книжный магазин