Адаптация MS—DOS—программ к работе в среде Windows 247

параметром LtGray_Bmsh. В стандартный контекст входят также черная, белая и темно — серая кисти.

Вывод осей графика и самого графика осуществляется с помощью пера и двух АРУ—функций: MoveTo и LineTo. Первая перемещает перо в заданное положение на контексте устройства, вторая вычерчивает линию от текущего положения пера к указанной точке и оставляет перо в этой точ — ке. Стандартный контекст оснащен пером, вычерчивающим черные линии толщиной в 1 пиксел. Если бы программе понадобилось другое перо, она должна была бы предварительно его создать и включить в контекст, а после использования — удалить его из контекста и уничтожить.

Именно такие действия осуществляются при выводе заголовка графика. Сначала создается новый шрифт (стандартный шрифт контекста практически не отличается от обычного системного шрифта). Для этого переменная LogFont, содержащая описание шрифта, вначале заполняется нулями, после чего в нее помещаются признаки утолщенного, наклонного и подчеркнутого шрифта, его высота и имя. Описав нужный шрифт, программа обращается к функции CreateFontIndirect, чтобы Windows по этому описанию создала шрифт и вернула его дескриптор, который запоминается в переменной Font. После этого обращением к SeIectObject в контекст окна вместо стандартного шрифта вставляется новый, причем дескриптор старого шрифта запоминается в переменной OldFont. Теперь все готово для вывода надписи. После обращения к SetBkMode (этот вызов необходим для отключения прорисовки фона букв) вызывается функция DrawText, которой передается подготовленный контекст, текст надписи, длина текста, охватывающий прямоугольник (переменная R) и признак центрирования надписи по горизонтали. По завершению вывода в контекст вставляется стандартный инструмент, а ненужный более шрифт уничтожается.

После циклического формирования графика и таблицы контекст окна также уничтожается с помощью обращения к функции ReleaseDC.

Полученный таким способом график крайне недолговечен: стоит изменить размеры окна или сделать его прокрутку, как он тут же бесследно исчезнет. Осуществив более глубокую модификацию модуля WinCRT, графику можно придать необходимую «прочность». Я мог бы описать необходимые изменения, но... может быть лучше заняться серьезным изучением Windows?