Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Что такое контекст устройства?
Вы должны хорошо понимать, что такое "контекст устройства". Вообще говоря, так называется область памяти, используемая в системе Windows для выполнения графических операций. Графический вывод может выполняться как на экран, так и на принтер. Объекты класса СDС содержат множество встроенных методов, используемых в процессе рисования в контексте устройства. Все рисование в Windows выполняется через контекст устройства. ПОДСКАЗКА: На первый взгляд может показаться, что контексты устройств усложняют ситуацию, но вообще-то они упрощают ее. Дело в том, что они могут соответствовать самым разным устройствам, например, экрану монитора или принтеру. Если вы рисуете через контекст устройства, то изображение будет правильно отображаться на разных устройствах, в том числе на экране и на принтере. Чтобы рисовать в нашем объекте вида, мы получаем контекст устройства, относящийся к нему. Кроме того, можно получить контекст устройства для всего окна, всего экрана или принтера. Для рисования в контексте устройства используются перечисленные ниже методы класса CDC; обратите внимание на их количество.
В нашем случае для вывода в объекте вида (соответствующего клиентской области окна) был использован метод TextOutкласса CDC. Методу OnDraw() передается Указатель pDC, ссылающийся на контекст устройства для нашего вида. Чтобы вывести текст welcome_stringв клиентской области, достаточно выполнить следующую строку: pDC->TextOut(0, 0, welcome_string); Методу TextOut() передаются координаты левого верхнего угла той области окна, где должна располагаться наша строка. В нашем случае текст выводится с точки (0,0)— левого верхнего угла клиентской области. Затем метод получает саму строку, welcome_string. ПОДСКАЗКА: В нашей клиентской области точка (0, 0) расположена в левом верхнем углу. Значение координаты х возрастает слева направо, а координаты у — сверху вниз. Такую координатную систему можно сравнить с чтением текста на странице: во время чтения вы перемещаетесь взглядом сверху вниз и слева направо. Итак, выполнение этой строки программы приводит к тому, что наша строка выводится на экран. Так данные программы отображаются в объекте вида. Исходный текст объекта вида находится в файлах welcomeView.h/welcomeView.cpp. ПОДСКАЗКА: В различные моменты работы программа может передавать методу OnDraw() разные контексты устройств. Например, когда мы добавили код в метод OnDraw(), в нашей программе появилась возможность вывода на печать. Если пользователь выполнит команду File> Print или нажмет кнопку с принтером на панели инструментов, программа передаст методу OnDraw() контекст устройства для принтера и наш текст будет напечатан. Если вы захотите предпринять какие-то специальные действия для подготовки печати, например, особым образом отформатировать свой документ), можете внести соответствующий код в метод OnPreparePrinting(). Объект вида отображает данные программы, которые обычно хранятся в объекте документа. Сейчас мы рассмотрим последний из четырех основных объектов нашей программы. Исследуем объект документа В объекте документа хранятся данные программы. В примере welcome нам потребовался только объект welcome_string. Для простоты мы разместили его в объекте вида, но на самом деле ему следовало бы находиться в объекте документа. Как разместить welcome_string в объекте документа? Прежде всего, нам следовало бы объявить welcome_string в заголовочном файле документа welcomeDoc.h: // welcomeDoc.h: интерфейс класса CWelcomeDoc // #if!defined(AFXJJELCOMEDOC_hL_AF072C89_900AJ1DO_8860_444553540000_INCLUDED_) #define AFX_WELCOMEDOC_H,_AF072C89_900A_11DO_8860_444553540000_INCLUDED_ #if _MSC_VER >= 1000 #pragma once #endif // _MSC_VER >= 1000 class CWelcomeDoc: public CDocument { protected: // создание только при сериализации CWelcomeDoc(); DECLARE_DYNCREATE(CWelcomeDoc) CString welcome_Strlng; } Затем мы инициализируем объект welcome_string в конструкторе класса документа, расположенном в файле welcomeDoc.cpp: CWelcomeDoc::CWelcomeDoc() { welcome_string ="Добро пожаловать в Visual C++!"; } Данные хранятся в объекте документа и готовы к работе—но как обратиться к ним из объекта вида? |
|||||
Последнее изменение этой страницы: 2018-04-12; просмотров: 595. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |