
- •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.
- •Согласование экспортируемых элементов с импортируемыми
Документы и их представление
Большинство приложений на базе библиотеки MFC будут гораздо сложнее. Как правило, в них, помимо только что упомянутых классов, будут содержаться еще два класса: «документ» (document) и «вид», или «представление» (view). Такая архитектура «документ-вид» — стержень каркаса приложений; Проще говоря, архитектура «документ-вид» отделяет данные от их представления. Очевидное преимущество этого подхода — возможность представить одни и те же данные по-разному. Предположим, на диске хранится документ с биржевыми сводками за месяц, а данные представлены в виде таблицы и графика. Мы изменяем значения в окне табличного представления, и содержимое окна графического представления тоже изменяется, потому что оба окна отображают одну и ту же информацию (но представленную в разных видах).
В библиотеке MFC документам и их представлениям сопоставляются экземпляры (instances) классов C++.
Взаимосвязь документов и их представления
Код базового класса «документ» взаимодействует с командами Open и Save меню File; действительное чтение и запись данных объекта «документ» реализуют производные классы «документ». (Каркас приложений берет на себя большую часть работы по выводу на экран диалоговых окон File Open и File Save, а также по открытию, закрытию, чтению и записи файлов.) Базовому классу «вид» сопоставлено окно, содержащееся внутри окна-рамки; производный класс «вид» взаимодействует со своим, сопоставленным ему классом «документ» и отвечает за вывод информации на экран и принтер. Производный класс «вид» и его базовые классы обрабатывают сообщения Windows. Библиотека MFC «дирижирует» всеми взаимосвязями между документами, их представлениями, окнами и объектом «приложение» в основном за счет виртуальных функций.
Не подумайте, что объект «документ» должен быть связан с дисковым файлом, целиком считываемым в память. Если, например, «документ» — на самом деле база данных, Вы можете переопределить выбранные функции-члены класса «документ», и тогда команда Open меню File будет выдавать вместо списка файлов список баз данных.
22. Обработка сообщений
Когда Вы пишете в MS-DOS-программу на С, то от Вас требуется безусловное наличие в программе функции main. Операционная .система вызывает main при запуске программы, и с этого момента Вы, по сути, можете делать все, что угодно. Если программе необходимо узнать, какие клавиши нажаты на клавиатуре, или как-то иначе воспользоваться сервисом операционной системы, она вызывает соответствующие функции, например getchar, или обращается к более специализированной библиотеке функций, оперирующих с символами.
В Windows же операционная система при запуске программы вызывает ее функцию Win-Main. В любом приложении обязательно должна присутствовать эта функция, на которую возлагается ряд специфических задач. Важнейшая из них — создание основного окна программы, с которым должен быть связан код, способный обрабатывать сообщения, передаваемые этому окну операционной системой. Существенное различие между MS-DOS- и Windows-программой состоит в способе получения введенных пользователем данных: первая вызывает операционную систему, вторая использует поступающие от нее сообщения.
ПРИМЕЧАНИЕ Многие среды программирования для Windows, включая Microsoft Visual C++ 6.0 с библиотекой классов Microsoft Foundation Class (MFC) Library 6.0, упрощают программирование, скрывая функцию WinMain и структурируя процесс обработки сообщений. При использовании библиотеки MFC Вам не понадобится писать функцию WinMain, но очень важно понимать, как взаимодействуют операционная система и ваша программа.
Большинство сообщений в Windows строго определено и относится ко всем программам. Например, сообщение WM_CREATE передается при создании окна, WM_LBUTTONDOWN – при нажатии левой кнопки мыши, WM_CHAR — при вводе символа, a WM _CLOSE — при закрытии окна пользователем. У всех сообщений имеется два 32-разрядных параметра, передающих такую информацию, как координаты курсора код нажатой клавиши и т. д. Сообщения группы WM_COMMAND отправляются соответствующему окну в ответ на выбор пользователем команд в меню, щелчки кнопок диалоговых окон и т. п. Параметры командных сообщений зависят от структуры меню конкретного окна. Кроме предопределенных сообщений, программист может задавать свои, так называемые «пользовательские сообщения», которые можно послать любому окну. Не ломайте пока голову над тем, как программный код обрабатывает сообщения. За это отвечает каркас приложения (application framework). Однако будьте готовы к тому, что обработка Windows-сообщений накладывает на структуру программ весьма жесткие ограничения. Не пытайтесь выстраивать программы для Windows по аналогии с MS-DOS