- •Содержание
- •ВВЕДЕНИЕ
- •1.ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ ПОДХОД
- •2. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ
- •2.1. Абстрактные типы данных
- •2.2. Базовые принципы объектно-ориентированного программирования
- •2.3. Основные достоинства языка С++
- •2.4. Особенности языка С++
- •2.4.1. Ключевые слова
- •2.4.2. Константы и переменные
- •2.4.3. Операции
- •2.4.4. Типы данных
- •2.4.5. Передача аргументов функции по умолчанию
- •2.5.1. Объект cin
- •2.5.2. Объект cout
- •2.5.3. Манипуляторы
- •3.1. Объекты
- •3.2. Понятие класса
- •3.3. Конструктор копирования
- •3.4. Конструктор explicit
- •3.5. Указатель this
- •3.6. Встроенные функции (спецификатор inline)
- •3.7. Организация внешнего доступа к локальным компонентам класса (спецификатор friend)
- •3.8. Вложенные классы
- •3.9. Static-члены (данные) класса
- •3.10. Компоненты-функции static и const
- •3.11. Proxi-классы
- •3.12. Ссылки
- •3.12.1. Параметры ссылки
- •3.12.2. Независимые ссылки
- •3.13. Пространства имен
- •3.13.3. Ключевое слово using как объявление
- •3.13.4. Псевдоним пространства имен
- •3.14. Практические приемы ограничения числа объектов класса
- •4. НАСЛЕДОВАНИЕ
- •4.1.1. Конструкторы и деструкторы при наследовании
- •4.2. Виртуальные функции
- •4.3. Абстрактные классы
- •4.4. Виртуальные деструкторы
- •4.6. Виртуальное наследование
- •5.2. Перегрузка операторов
- •5.2.2. Перегрузка унарного оператора
- •5.2.3. Дружественная функция operator
- •5.2.4. Особенности перегрузки операции =
- •5.2.5. Перегрузка оператора []
- •5.2.6. Перегрузка оператора ()
- •5.2.7. Перегрузка оператора ->
- •5.2.8. Перегрузка операторов new и delete
- •5.3. Преобразование типа
- •5.3.1. Явные преобразования типов
- •6. ШАБЛОНЫ
- •6.1. Параметризированные классы
- •6.2. Передача в шаблон класса дополнительных параметров
- •6.3. Шаблоны функций
- •6.4. Совместное использование шаблонов и наследования
- •6.5. Шаблоны класса и friend-функции
- •6.6. Некоторые примеры использования шаблона класса
- •6.6.1. Реализация smart-указателя
- •6.6.2. Задание значений параметров класса по умолчанию
- •7.2. Состояние потока
- •7.3. Строковые потоки
- •7.4. Организация работы с файлами
- •7.5. Организация файла последовательного доступа
- •7.6. Создание файла произвольного доступа
- •7.7. Основные функции классов ios, istream, ostream
- •8. ИСКЛЮЧЕНИЯ В С++
- •8.2. Перенаправление исключительных ситуаций
- •8.3. Исключительная ситуация, генерируемая оператором new
- •8.6. Спецификации исключительных ситуаций
- •8.7. Задание собственного неожиданного обработчика
- •9. СТАНДАРТНАЯ БИБЛИОТЕКА ШАБЛОНОВ (STL)
- •9.3. Категории итераторов
- •9.4. Операции с итераторами
- •9.5. Контейнеры последовательностей
- •9.5.2. Контейнер последовательностей list
- •9.5.3. Контейнер последовательностей deque
- •9.6. Ассоциативные контейнеры
- •9.6.1. Ассоциативный контейнер multiset
- •9.6.2. Ассоциативный контейнер set
- •9.6.3. Ассоциативный контейнер multimap
- •9.7.1. Адаптер stack
- •9.7.2. Адаптер queue
- •9.7.3. Адаптер priority_queue
- •9.8. Алгоритмы
- •9.8.1. Алгоритмы сортировки sort, partial_sort, sort_heap
- •9.8.2. Алгоритмы поиска find, find_if, find_end, binary_search
- •9.8.3. Алгоритмы fill, fill_n, generate и generate_n
- •9.8.4. Алгоритмы equal, mismatch и lexicographical_compare
- •9.8.6. Алгоритмы работы с множествами
- •9.8.7. Алгоритмы swap, iter_swap и swap_ranges
- •9.8.8. Алгоритмы copy, copy_backward, merge, unique и reverse
- •10. ПРИМЕРЫ РЕАЛИЗАЦИИ КОНТЕЙНЕРНЫХ КЛАССОВ
- •10.1. Связанные списки
- •10.1.1. Реализация односвязного списка
- •10.2. Реализация бинарного дерева
- •11. ПРОГРАММИРОВАНИЕ ДЛЯ WINDOWS
- •11.1. Система, управляемая сообщениями
- •11.2. Управление графическим выводом
- •11.3. Контекст устройства
- •11.3.1. Экран
- •11.3.2. Принтер
- •11.3.3. Объект в памяти
- •11.3.4. Информационный контекст
- •11.4. Архитектура, управляемая событиями
- •11.5. Исходный текст программы
- •11.7. Некоторые новые типы данных
- •11.8. Венгерская нотация
- •11.9. Точка входа программы
- •11.11. Создание окна
- •11.12. Цикл обработки сообщений
- •11.13. Оконная процедура
- •11.14. Обработка сообщений
- •11.15. Обработка сообщений функцией DefWindowProc
- •11.16. Синхронные и асинхронные сообщения
- •11.17. Еще один метод получения описателя контекста устройства
- •11.19. Полосы прокрутки
- •Литература
11.2. Управление графическим выводом
Одна из главных особенностей Win32 API − независимость графического вывода от устройства. Windows включает в себя язык графического программи- рования, называемый графическим интерфейсом устройства (Graphics Device Interface, GDI), который облегчает создание графики и форматированного тек- ста. Windows абстрагируется от конкретного устройства отображения информа- ции. Программы, написанные для Windows, будут работать с любым типом дисплея и принтера, для которых имеется драйвер Windows. В программе нет необходимости задавать тип используемого в системе оборудования.
11.3. Контекст устройства |
|
|
Контекст устройства – структура, определяющая набор графических объ- |
||
ектов и связанных с ними атрибутов и графических режимовР. Приложение не |
||
|
|
У |
имеет прямого доступа к контексту устройства, настройка этой структуры осу- |
||
|
|
Г |
ществляется посредством вызова соответствующих функцийИWin32 API. |
||
Win32 API определяет четыре типа контекстов устройств: экран, принтер, |
||
объект в памяти и информационный. |
|
|
11.3.1. Экран |
ипа |
|
Win32 API обеспечивает три т |
контекстаБустройства: контекст класса, |
|
|
к |
л сса и частный контексты устройства |
общий и частный контексты. Конте ст |
используются в приложенияхе, оторые выполняют много операций рисования.
Общие контексты устройства используются в приложениях, которые редко вы-
полняют операции рисования.
Приложение получ |
кон кст экрана, вызывая функции BeginPaint или |
он |
|
GetDC и идентифицируя окно вывода информации. Тип контекста устройства |
зависит от того, как прил жение зарегистрировало класс окна. После заверше- |
||||
|
|
|
и |
еаетпосредством вывода функций EndPaint или RealeaseDC |
ния вывода пр л же |
||||
|
|
л |
текст устройства. |
|
должно освобод ть к |
||||
|
Контекст к асса поддерживается только для совместимости с предыду- |
|||
|
б |
|
|
|
щими версиями ОС Windows. В приложениях Win32 следует использовать ча- |
||||
и |
|
|
|
|
стные контексты. |
|
|||
Б |
О щий контекст − контекст устройства экрана, связанный с контекстом |
управлен я окна Win32 API, находящимся в области администратора окна. Windows инициализирует общие контексты устройства значениями по умолча- нию, которые можно менять по мере необходимости, используя специальные функции. Количество общих контекстов ограничено, и, следовательно, после завершения операции вывода необходимо освободить контекст устройства. При этом установленные параметры будут отменены.
Частные контексты отличаются от общих тем, что сохраняют любые из-
менения для заданных по умолчанию данных даже после вызова функций EndPaint или RealeaseDC. Частные контексты не являются частью области ад- министратора окна и, следовательно, лишь однократно инициализируются зна-
245