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


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


130 136 141 147 151 153 154 154 152 149 144 139 133 127 121 115 111 107 105 105

Для чтения данных из файла использована функция fscanf(), преобразующая, в процессе чтения, ка­ждое данное в двоичную форму в соответствии с указанным в аргументах функции шаблоном "%d".

Существенным моментом является назначение классу окна стиля CS_VREDRAW. Это назначение выполняется в замещающей функции GetWindowClass(), использование было подробно описано в гл. 26. Стиль CS_VREDRAW определяет полную перерисовку окна (а не только его области вырезки) при лю­бых манипуляциях с размером окна или перемещением по нему окна диалога. Как было показано в гл. 12, полная перерисовка окна, являющаяся неэффективной с точки зрения расходования процессорного времени, необходима в тех случаях, когда изображение в окне строится относительно его нижней (или правой) границы, что типично для вывода графиков.

Открытие немодального диалога осуществляется в функции отклика на нажатие кнопки "Вид..." CmView(). С помощью оператора new создается безымянный объект класса MyDialog и в том же пред­ложении для него вызывается функция класса TDialog Create(), которая служит для вывода на экран не­модального диалогового окна. Вспомним, что для активизации модального диалога мы использовали функцию Execute(), а для его завершения - функцию DestroyWindow(). Немодальный же диалог завер­шать нет особой необходимости, так как он, будучи выведен на экран, не препятствует использованию любых других органов управления главного окна.

Назначение диалога в данном примере заключается в установлении режима вывода графика, для чего предусмотрены три функции отклика: CmPoints(), CmCurves() и CmHisto(). В каждой из этих функций переключателю режима отображения view присваивается соответствующее значение, после чего вызо­вом функции Invalidate() для объекта главного окна инициируется полная его перерисовка.

Вывод графика осуществляется, как и положено, в функции Paint() главного окна. В ней прежде все­го создаются и загружаются в контекст устройства синее перо и синяя кисть, а затем в зависимости от значения переменной view на экран выводятся либо маленькие (радиусом 2 пиксела) кружки, либо ли­нии, соединяющие точки графика, либо прямоугольники, образующие гистограмму. Число 10, фигури­рующее в координатах вывода, характеризует смещение графика на 10 пикселов относительно левой границы окна. Ради простоты в программе не выполняется никаких действий по масштабированию гра­фика и не анализируется число введенных данных.




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