
- •Понятие визуального программирования.
- •Типы приложений (оконное приложение, консольное, сервис, драйвер).
- •Программирование, основанное на ресурсах. Редакторы ресурсов. Компилятор ресурсов. Функции для работы с ресурсами.
- •Работа с документами и окнами просмотра документов.
- •Структура оконного приложения.
- •Разработка однодокументных приложений. Использование AppWizard.
- •Назначение и методы классов приложения, главного окна, документа и вида.
- •Обработка сообщений. Работа с clAssWizard.
- •Обработка сообщений. Сообщение Windows. Обработка сообщений мыши и клавиатуры.
- •Панели элементов управления и каркас приложения. Панель инструментов. Строка состояния.
- •Модальные и немодальные диалоговые окна. Работа с модальным диалоговым окном.
- •Модальные и немодальные диалоговые окна. Работа с немодальными диалоговыми окнами.
- •Архитектура Document-View.
- •Управление gdi объектами. .Стандартные gdi-объекты .
- •Создание и уничтожение gdi-объектов.
- •Распределенные приложения. Технология dcom.
- •Многодокументный интерфейс mdi.
- •Рисование с помощью cdc.
- •Обзор основных классов mfc.
- •Классы для программирования графического интерфейса Windows.
- •Классы для обработки списков, массивов, коллекций.
- •Выполнение стандартных файловых операций с помощью класса cFile.
- •Сериализация данных приложения.
- •Многодокументный интерфейс mdi.
- •Понятие процесса и потока. Программирование многопоточных приложений.
- •Управление памятью в mfc.
- •Технологии связывание и внедрения объектов ActiveX.
- •Назначение и преимущества использования технологии ActiveX.
- •Установка элементов управления ActiveX.
- •Использование управляющих элементов ActiveX.
- •Понятие технологии com.
- •Создание объектов сом
- •Повторное применение объектов сом
- •Поддержка баз данных в mfc.
- •Технология ado
- •Обзор технологий odbc, dao, rdo, ole db. Интерфейсы доступа к данным.
- •Создание экранной формы для отображения содержимого бд.
- •Классы mfc для работы с сетью.
- •Программирование приложений для Интернета.
- •Динамически подключаемые библиотеки на mfc.
Многодокументный интерфейс mdi.
Существуют два основных стиля интерфейсов пользователя: интерфейс с одним документом (single-document interface, SDI) и интерфейс со многими документами (multiple-document interface, MDI). Текстовый редактор с интерфейсом SDI позволяет открыть только один документ - чтобы открыть другой, следует закрыть предыдущий. В приложении MDI Вы можете открыть сразу несколько документов.
Контейнер для форм
В приложение Visual Basic можно добавить MDI форму, которая будет служить контейнером для подчиненных форм. Подчиненная форма - это обычная форма, у которой значение свойства MDIChild равно True. В режиме выполнения подчиненные окна помещаются внутри родительского окна MDI формы. Меню команд MDI формы может быть общим для всех подчиненных окон, или, если подчиненная форма имеет собственное меню команд, оно замещает меню формы контейнера. При закрытии формы-контейнера закрываются все подчиненные формы.
В приложении MDI можно открыть много окон построенных по одному образцу. При этом в режиме проектирования создается один экземпляр формы. Для того чтобы в режиме выполнения открыть много окон в коде программы создаются новые экземпляры подчиненной формы.
Dim NewDoc As New Form1
' Создать новый экземпляр формы
NewDoc.Show
' Показать на экране
Поскольку много подчиненных форм имеют одинаковое имя и одинаковый код, то не следует в коде программы (если код используется несколькими экземплярами формы) использовать имя формы. В модуле формы для ссылок на текущую форму используйте ключевое слово Me.
Unload Me ' Выгрузить текущую форму
На форму MDI можно поместить управляющий элемент, если он имеет свойство Align (Выстроить) или является невидимым в режиме выполнения.
Рисование с помощью cdc.
Основа работы с графикой в Windows и естественно в MFC является GDI. Работа с этой библиотекой производится всегда в независимости от того куда направляется вывод на принтер или экран или куда еще подальше. Всегда пользуемся функциями GDI. Для реализации всего этого реализовано три механизма.
Контекст устройства его можно представить как лист бумаги, на котором будет производиться рисование.
Драйвер устройства - это специальная программа которая умеет этот самый контекст перевести на конкретное устройство
Режим отображения - это настройки растрирования. На данный момент все устройства вывода работают с растрами даже если вы создаете векторный чертеж. Раньше были старые такие плоттеры типа HP Draf Pro, которые умели рисовать линиями с помощью разноцветных карандашей :-), но на данный момент большинство устройств переводят все в растр и выводят на печать или еще куда.
В MFC есть несколько контекстов устройств и все наследники от CDC, вот смотрите сами.
CObject -
| |-> CClientDC
| |-> CWindowDC
CDC------->|-> CMetaFileDC
|-> CPaintDC
Каждый из контекстов рисует в определенном месте, то есть каждый контекст предназначен для рисования в определенной области. Странно, но CPaintDC и CClientDC очень похожи. Оба эти класса предназначены для рисования внутри клиентской области окна. То есть они не могут добраться до меню или рамки окна. Чем они отличаются ? CPaintDC используется только тогда когда отвечает на сообщение WM_PAINT. Вместе с этим сообщением будет передана та область, которая требует перерисовки. Ведь окно может быть на экране не полностью. Для извешения о перерисовке вызываются функции BeginPaint и EndPaint без их вызова Windows будет считать, что перерисовка не произошла. Вот в этом и существенные отличия CPaint, в его конструкторе автоматически вызывается BeginPaint, а в деструкторе EndPaint. CClientDC не выполняет эти функции автоматически.