В программах части II этой
dc.Rectangle(5,5,20,20); //Рисуем этим пером квадрат
В программах части II этой книги мы, во-первых, при выборе в контекст нового инструмента сохраняли в некоторой временной переменной исходный инструмент; во-вторых, перед выходом из функции OnPaint() восстанавливали в контексте этот исходный инструмент; в-третьих, перед завершением программы удаляли все созданные инструменты.
Обработка сообщения WM_PAINT и интерфейс GDI 235
В OWL-программах эта процедура несколько упрощается, так как часть работы берут на себя функции классов. При первой смене инструмента в контексте устройства функция SelectObject() сохраняет дескриптор инструмента, находящегося там по умолчанию (черное тонкое перо, белая кисть) в специально отведенных для этого переменных-членах класса TDC OrgPen, OrgBrush, OrgFont и OrgPalette. Эти защищенные члены класса обычно недоступны программисту, однако они используются функциями Re-storePen(), RestoreBrush() и т.д., которые выбирают в контекст устройства сохраненные в перечисленных выше переменных дескрипторы инструментов. Поэтому при выборе в контекст нового инструмента нет необходимости сохранять старый (впрочем, и возможности такой тоже нет, так как используемая для выбора инструмента в контекст устройства функция SelectObject() ничего не возвращает). Далее, восстанавливать исходные инструменты в контексте тоже не обязательно, так как в деструкторе класса TDC вызывается функция RestoreObjects(), которая восстанавливает в контексте исходные значения всех дескрипторов. Наконец, созданные инструменты можно не удалять, так как деструктор любого класса, вызываемый автоматически при выходе из процедуры, в которой был создан объект данного класса, удалит этот объект (между прочим, в составе классов инструментов, например, ТРеn или TBrush, даже нет функций типа DeletePen() или DeleteBrush(), что, впрочем, вполне естественно, так как основным назначением деструктора и является как раз удаление объекта).
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий