
- •Глава 3 Рисование текста
- •Рисование и обновление
- •Сообщение wm_paint
- •Действительные и недействительные прямоугольники
- •Введение в графический интерфейс устройства (gdi)
- •Контекст устройства
- •Получение описателя контекста устройства. Первый метод
- •Структура информации о рисовании
- •Получение описателя контекста устройства. Второй метод
- •Функция TextOut. Подробности
- •Системный шрифт
- •Размер символа
- •Метрические параметры текста. Подробности
- •Форматирование текста
- •Соединим все вместе
- •Оконная процедура программы sysmets1.С
- •Не хватает места!
- •Размер рабочей области
- •Полосы прокрутки
- •Диапазон и положение полос прокрутки
- •Сообщения полос прокрутки
- •Прокрутка в программе sysmets
- •Структурирование вашей программы для рисования
- •Создание улучшенной прокрутки
- •Мне не нравится пользоваться мышью
Глава 3 Рисование текста
В предыдущей главе вы познакомились с простой программой для Windows 95, в которой в центре окна или, если быть более точным, в центре рабочей области окна, выводилась одна текстовая строка. Очень важно понимать разницу между окном приложения и его рабочей областью: рабочая область — это часть всего окна приложения, в верхней части которой нет строки заголовка, у которой нет рамки окна, нет строки меню, нет полос прокрутки. Короче говоря, рабочая область — это часть окна, на которой программа может рисовать и представлять визуальную информацию для пользователя.
Вы можете делать с рабочей областью вашей программы почти все, что захотите — все, за исключением того, что у вас отсутствует возможность задать ей определенный размер или оставить этот размер неизменным во время работы вашей программы. Если вы приспособились писать программы для MS-DOS, эти условия могут вас слегка огорчить. Вы можете больше не думать о рамках экранного пространства, т. е. о 25 (или 43, или 50) строках текста и 80 символов. Ваша программа должна делить экран с другими программами. Пользователь Windows управляет тем, как расположить на экране окна программ. Хотя вполне можно создать окно фиксированного размера (как это делается в программе калькулятора и сходных с ней программах), в подавляющем большинстве случаев размер окна — это величина переменная. Ваша программа должна учитывать размер окна и использовать рациональные способы работы с ним.
Здесь возможны два варианта. Рабочая область может оказаться недостаточной даже для того, чтобы поместилось только слово "Hello". Точно также она может оказаться на большом экране видеосистемы с высоким разрешением, и оказаться настолько большой, что в ней могли бы поместиться две полные страницы текста и, кроме этого, на экране еще осталось бы множество участков свободного пространства. Умение разумно поступать в обеих этих ситуациях — это важная часть программирования для Windows.
Хотя в Windows имеется очень широкий набор функций графического интерфейса устройства (GDI) для вывода графики на экран, в этой главе будет рассказано только о выводе простых текстовых строк. Не будут также рассматриваться различные шрифты и их размеры, имеющиеся в Windows, и будет использоваться только системный шрифт (system font), который Windows использует по умолчанию. Этого может показаться недостаточно, но на самом деле вполне хватает. Задачи, с которыми мы в этой главе столкнемся, и которые решим, относятся к программированию для Windows в целом. Если вы выводите на экран сочетание текста и графики (как, например, это происходит в программе Windows Calculator), размеры символов, задаваемые по умолчанию системным шрифтом Windows, часто определяют и размеры графики.
На первый взгляд, эта глава посвящена тому, как научиться рисовать, но в действительности в ней изучаются основы программирования, независимого от используемого оборудования. В программах для Windows можно не задумываться о размерах рабочей области окна или даже о размерах текстовых символов. Вместо этого в них нужно использовать те возможности, которые предлагает операционная система для получения информации о среде, в которой работает программа.