Глава 25. Графический интерфейс устройства 705
I/ с использованием прямоугольника TRect rect(10, 10, 150, 150);
dc.Rectangle(rect) ;
Совет
Вот хорошее правило, которое можно часто (хотя и не всегда) применять, если вы хорошо знакомы с интерфейсом Windows API, основанном на подходе С. Большинство функций Windows GDI имеют соответствующий метод контекста устройства, имеющий такие же аргументы. Однако в версии, основанной на классах OWL, нет необходимости передавать дескриптор (handle) контекста устройства Windows (т. е. нос), поскольку экземпляр класса уже и есть HDC. Поэтому лучше попробовать использовать перегруженные методы готовых классов OWL, таких как TRect, TPoint и TSize. Как правило, они легче для чтения, понимания и программирования.
Ваши программы часто будут использовать контекст устройства, предоставляемый библиотекой OWL (например, в процедуре обработки события), и вы, работая с ним, можете пребывать в полной уверенности,.что перед вами экземпляр TDC. Однако на самом деле вы почти всегда будете иметь дело с контекстом устройства производного типа.
Так, например, вывод содержимого окна на принтер требует специализированного контекста устройства с соответствующим названием: TprintDC. Поскольку код для печати подобен (если не просто идентичен) коду для вывода окна на экран, процесс печати обычно подключает OWL, посылая вашей программе простое сообщение paint. При этом, однако, объект TDC, переданный в обработчик сообщения paint, на самом деле является экземпляром класса TprintDC. И наоборот, контекст устройства, который обычно передается в обработчик сообщения paint в ответ на нормальный запрос перерисовки экрана, на самом деле является экземпляром класса TpaintDC.
Таким образом, ясно, что в случае с контекстами многие вещи не всегда являются тем, чем кажутся. Но прелесть OWL и заключается в том, что вашей программе не надо заботиться об этом. Воспринимайте все как обычный TDC, и вы не ошибетесь. В табл. 25.1 приводятся различные контексты устройств, поддерживаемые OWL. Напомним, что многие из этих классов не будут прямо использоваться вашими программами; экземпляры некоторых из них могут быть созданы библиотекой OWL и представлены вам под маской доброго старого TDC.
Тип контекста |
Описание |
• |
TDC |
Базовый класс контекста устройства. Поскольку TDC построен с использованием обычных дескрипторов контекста Windows, классы TDC (и их производные собратья) часто создаются с помощью OWL и передаются событию application и обработчикам команд |