
- •1. Признаки сложных систем. Сложность, присущая программному обеспечению.
- •2. Компоненты объектно-ориентированного подхода.
- •3. Объекты и классы с точки зрения объектно-ориентированного проектирования.
- •4. Модели и диаграммы, используемые в объектно-ориентированном подходе.
- •5. Техника отладки.
- •6. Работа с многофайловыми проектами. Использование включаемых файлов.
- •9. Простое наследование. Контроль доступа к атрибутам класса.
- •10. Виртуальные функции (вф) и абстрактные классы.
- •11. Множественное и виртуальное наследование.Множественное наследование
- •12 Перегрузка операций
- •13. Шаблоны функций, макросы, inline-функции.
- •14. Шаблоны классов.
- •15. Обработка исключительных ситуаций, структурная обработка исключений.
- •16. Пространства имён. Кратко о механизме пространства имен
- •Зачем нужен механизм пространства имен?
- •Имитация средствами языка Си
- •Правило составления имени
- •Недостатки
- •17 Строки и потоки.
- •18.Стандартная библиотека: Контейнеры
- •19 Реализация устойчивости объектов средствами mfc.
- •20. Структура Windows-приложения WinApi
- •21. Структура Windows-приложения, использующего библиотеку mfc
- •Документы и их представление
- •22. Обработка сообщений
- •23. Контекст устройства
- •24.Объекты gdi
- •25.Использование контекста отображения в памяти.
- •26.Режимы отображения.
- •27.Работа с меню. Обработка сообщений.
- •28.Работа с диалогами. Обработка сообщений.
- •29. Работа с полями ввода и кнопками.
- •30. Работа со списками и выпадающими списками. Работа со списком
- •Работа с комбинированном списком
- •Инициализация
- •Операции со строками
- •31. Классы CimageList и CtreeCtrl. Класс cImageList
- •Изменение содержимого списка
- •32. Классы CimageList и ClistCtrl. Класс cImageList
- •Изменение содержимого списка
- •Создание просмотра списка
- •Работа со столбцами
- •Функции для работы со списком в целом
- •Рабочие области просмотра списка
- •Поиск и сортировка записей
- •33. Классы CprogressCtrl, cRichEdit Ctrl, CsliderCtrl, cSpinButton Ctrl.
- •34. Классы cPropertySheet и cPropertyPage.
- •35. Передача информации в диалог и обратно.
- •36. Работа со стандартными диалогами.
- •37.Обработка сообщений от клавиатуры и мыши(wm_char,wm_keYxxx,wm_xButtoNxxx,
- •38 Таймеры, использование времени простоя программы и локального цикла обработки сообщений.
- •39. Библиотеки динамической компоновки. Явная и неявная загрузка dll.
- •Согласование экспортируемых элементов с импортируемыми
25.Использование контекста отображения в памяти.
Контекст устройства – объект Windows, содержащий информацию о параметрах рисования для некоторого графического устройства. (принтер, монитор)
Класс CDC — базовый класс для всех классов, представляющих в библиотеке MFC контексты устройств. Класс CDC обеспечивает разработчика набором функций-членов для работы с такими устройствами, как экран дисплея или принтер, а также позволяющих работать с окнами Windows в целом или только с их клиентской частью. Еще раз подчеркнем — все операции рисования выполняются только для объектов класса CDC. Из всех классов, предоставляющих интерфейс с контекстами устройств, только класс CDC обеспечивает разработчиков всем необходимым для реализации правильного и эффективного графического вывода, остальные классы, в основном отличающиеся конструктором и деструктором, можно считать вспомогательными.
virtual BOOL CDC::CreateCompatibleDC(CDC* pDC) —создает контекст устройства, расположенный в памяти, совместимый (подобный) заданному параметром pDC. Такие контексты позволяют выполнять операции рисования без непосредственной визуализации. Если pDC = NULL, функция создает контекст устройства, совместимый с экраном дисплея.
В момент создания контекста GDI автоматически устанавливает для него системный монохромный битовый массив размером 1х1 пиксель. Таким образом, операции графического вывода могут производиться только, если будет создан и установлен новый битовый массив для данного контекста устройства
Функция может создать совместимый, контекст устройства только для контекстов, поддерживающих растровые операции. Определить, поддерживает устройство растровые операции или нет, можно с помощью функции GetDeviceCaps.
Совместимые контексты используются для улучшения характеристик вывода графических объектов на экран дисплея, т. к. позволяют заранее подготовить "картинку" в памяти, а затем ее вывести полностью на экран, для чего можно воспользоваться функцией BitBIt, осуществляющей перенос битовых массивов между контекстами.
26.Режимы отображения.
До сих пор, говоря о задании координат, мы подразумевали, что речь идет о смещении относительно левого верхнего угла экрана (screen coordinates) или левого верхнего угла клиентской области окна (client coordinates). В принципе для всего, что касается окон в целом и оконных сообщений, например WM_MOVE, WM_MOUSEMOVE, это правильно.
Настройка режимов отображения
Функции этой группы устанавливают и настраивают систему координат, которая используется всеми функциями вывода — координаты вывода задаются именно в логических единицах. Кроме единиц по осям Х и Y, функции этой группы задают направление осей и начало координат. Практически все функции группы реализованы парами. Функции с префиксом Get позволяют получить текущее значение параметра, а с префиксом Set устанавливают новое значение и возвращают предыдущее. По умолчанию начало координат находится в левом верхнем углу области вывода, (прежде всего окна). При этом ось Х направлена слева направо, а ось Y — сверху вниз. Единица измерения — один пиксель (режим ММ_ТЕХТ). Кстати сказать, именно поэтому на различных устройствах, вследствие различий в размерах пикселя, фактический (визуальный) размер по оси Х может не соответствовать размеру по оси Y.
Для настройки системы координат в Windows используются два понятия — физическая область вывода (viewport), координаты и размеры которой задаются в физических единицах — пикселях, и логическая область вывода (window), координаты и размеры которой задаются в логических единицах, определяемых режимом рисования.
Теперь давайте ознакомимся с режимами отображения, которые поддерживает Windows. Всего их восемь, и основная функция, которая позволяет выбрать режим, а значит, и систему координат, — SetMapMode:
virtual int CDC::SetMapMode(int nMapMode);
ММ_ТЕХТ(Одна логическая единица равна одному пикселю, ось Х направлена вправо, ось Y направлена вниз; режим задан по умолчанию)
MM_HIENGLISH(Одна логическая единица равна 0,001 дюйма, ось Х направлена вправо, ось Y направлена вверх)
MM_HIMETRIC(Одна логическая единица равна 0,01 миллиметра ось Х направлена вправо, ось Y направлена вверх)
MM_LOENGLISH(Одна логическая единица равна 0,01 дюйма, ось Х направлена вправо, ось Y направлена вверх)
MM-LOMETRIC(Одна логическая единица равна 0,1 миллиметра, ось Х направлена вправо, ось Y направлена вверх)
MM_TWIPS(Одна логическая единица — твипс (twips) (1/20 пункта или 1/1440 дюйма), ось Х направлена вправо, ось Y направлена вверх)
MM_ANISOTROPIC(Режим позволяет настраивать с помощью функций SetWindowExt и SetViewportExt размерность (отдельно для каждой) осей, их направления и начало отсчета)
MM_ISOTROPIC(Режим позволяет настраивать с помощью функций SetWindowExt и SetViewportExt размерность осей, их направления и начало отсчета, однако единица оси Х равна единице оси Y, таким образом, при необходимости GDI настраивает размерность по осям, обеспечивая соотношение 1:1)