
- •Понятие визуального программирования.
- •Типы приложений (оконное приложение, консольное, сервис, драйвер).
- •Программирование, основанное на ресурсах. Редакторы ресурсов. Компилятор ресурсов. Функции для работы с ресурсами.
- •Работа с документами и окнами просмотра документов.
- •Структура оконного приложения.
- •Разработка однодокументных приложений. Использование 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.
Модальные и немодальные диалоговые окна. Работа с немодальными диалоговыми окнами.
Диалоговое окно - это дочернее окно главного окна приложения, которое применяется как для отображения информации о состоянии приложения, так и для ввода пользователем новых данных. Существует два типа диалоговых окон. Модальное диалоговое окно получает управление интерфейсом приложения и удерживает его до тех пор, пока его не закроет пользователь. Немодальные диалоговые окна применяются реже. Окно такого типа не монополизирует управление приложением и, оставаясь открытым, позволяет работать с несколькими окнами приложения одновременно.
Последовательность создания диалогового окна включает следующие шаги:
проектирование в редакторе диалога шаблона диалогового окна с включением в него всех требуемых элементов управления и настройки их свойств;
создание класса, производного от CDialog, с описанием в нем переменных и обработчиков событий, а также указанием используемого шаблона диалога;
определение для каждого элемента управления переменной или объекта, используемых для доступа к значению данного элемента управления;
определение необходимых методов обработчиков событий для каждого элемента управления;
создание объекта разработанного производного класса диалога (фактически вызов конструктора) и создание диалогового окна:
Для модального диалога
Для немодального диалога
вызов конструктора с параметром, указывающим ID шаблона диалога
вызов конструктора без параметра шаблона диалога
вызов метода DoModal
вызов метода Create с параметром, указывающим ID шаблона диалога
переопределение метода OnInitDialog и включение в него вызова метода базового класса и необходимых действий по инициализации диалогового окна.
Архитектура Document-View.
Архитектура Документ-Вид означает приблизительно следующее. У вас есть один класс, который отвечает за данные, и второй класс, который отвечает за представление этих данных на экране. Таким образом эти два класса разделяют обязанности, и каждый отвечает за свою собственную часть работы. При этом у одного документа может быть несколько видов. Класс документа отвечает за такие вещи, как хранение данных, за сохранение их на диске и чтение с диска и др., класс же вида за представление данных на экране (прорисовка, обновление и т. п.).
Пример номер один - Word. Вы можете просматривать ваш файл в разных режимах (обычном, режиме структуры и т. п.). И документ при этом у вас тот же самый, только его виды будут различаться.
Пример номер два. Программа - часы. Она просто показывает время. Но при этом собственно данные (текущее время и т. п.) лучше хранить отдельно от представления их на экране (например, потому, что ваши часы вы можете показывать в разных видах - в виде часов со стрелками, в виде электронных часов с цифрами и т. п.).
Пример номер три. Представьте себе, что в документе вы имеете дело с окружностью. На экране вы можете представить ее разными способами - или в виде собственно окружности, или в виде формулы, или еще как-нибудь. Документ при этом у вас будет один, а видов у него может быть несколько.
Когда вы начинаете делать свое приложение с использованием AppWizard, то на шаге 1 мастера вы задаете, будет ли или нет использоваться архитектура Документ-Вид: однодокум или многодокум интерф.
Отметим, то CView - это оконный класс (потомок класса CWnd), а CDocument - нет.
В вашей программе класс документа - это потомок класса CDocument, а класс вида проиходит от класса CView непосредственно или через другие классы. Предка для вашего класса Вида вы можете выбрать на шаге 6 AppWizard'а. (а также когда пользователь выбирает команды Open и New в меню File.)
Управляющие элементы. Расширение возможностей пользовательского интерфейса.
Управляющие элементы. Работа с флажками и переключателями. Работа со списками.
Элементы управления общего назначения (линейный индикатор, календарь и т.д.).
Графика в Visual C++.
Методы для рисования линий и фигур в MFC.
Создание простейших графических объектов.
Для вывода графической информации существует набор функций, которые можно разделить на несколько категорий:
Методы рисования линий: LineTo, MoveTo, Polyline, Arc, ArcTo, PolyBezier, и др.
Методы рисования замкнутых фигур: Ellipse, Rectangle, Polygon, Pie, Chord и др.
Методы вывода текста: TextOut, DrawText и т.д.
Функции работы с растровым изображением: GetPixel, SetPixel, FloodFill, BitBlt и т.д.
Существует отдельная категория функций работы с DC по переключению режимов и установке параметров вывода графической информации. Часть из них устанавливается напрямую через определенные функции (например, SetBkColor), часть - с помощью специальных графических объектов:
перо (pen)
- задает режим вывода линий (цвет, толщина, стиль);
кисть (brush)
- регулирует режим закраски фигур (цвет, стиль);
шрифт (font)
- задает свойства шрифта, которым выводится текст;
палитра (palette)
- задает набор используемых в DC цветов;
область (region)
- используются для задания clipping regions - областей отсечения, вне которых вывод графики блокируется.
Работа с графическими объектами производится с помощью их дескрипторов (handles) - HDC, HPEN, HBRUSH, HFONT и т.д. Создание и удаление объектов производится с помощью соответствующих функций - например, объект pen создается с помощью CreatePen, удаляется с помощью DeleteObject. Режимы, задающиеся через графические объекты, переключаются с помощью создания новых объектов и указания контексту (DC) использовать их для вывода графики. Это делается помощью функции SelectObject:
//hdc - дескриптор контекста устройства
HPEN hWhitePen, hBlackPen, hOldPen;
HBRUSH hBlackBrush, hOldBrush;
hWhitePen = CreatePen(PS_SOLID, 1, RGB(255, 255, 255));
hBlackPen = CreatePen(PS_SOLID, 1, RGB(0, 0, 0));
hBlackBrush = CreateSolidBrush(RGB(0, 0, 0));
// нарисовать белый квадрат
hOldPen = SelectObject(hdc, hWhitePen);
MoveTo(hdc, 10, 10);
LineTo(hdc, 100, 10);
LineTo(hdc, 100, 100);
LineTo(hdc, 10, 100);
LineTo(hdc, 10, 10);