
- •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.
- •Согласование экспортируемых элементов с импортируемыми
20. Структура Windows-приложения WinApi
Программирование под Windows значительно отличается от разработки DOS-приложений. В первую очередь это касается использования разделяемых ресурсов, таких, как ввод с клавиатуры. В Windows-приложении нельзя использовать функции, выполняющие чтение данных напрямую с клавиатуры. Вместо этого происходит обработка сообщения ввода. Следующей особенностью программирования является возможность одновременного использования несколькими приложениями одинаковых DLL-библиотек. Основой построения приложений служит графический интерфейс пользователя, позволяющий программисту создавать диалоговые окна, описывать меню и использовать стандартный интерфейс для действий с клавиатуры или мышью.
Все меню, курсоры и пиктограммы, используемые в приложении, называются ресурсами и создаются с помощью редактора ресурсов (входящего в состав Visual C++).
Windows-приложение состоит из следующих основных компонентов:
• программы на языке C/C++, содержащей функцию WinMain и функцию окна;
• файла описания ресурсов (меню, диалоговые окна, пиктограммы, курсоры);
• файла описания модуля (только для 16-разрядных приложений).
Функция WinMain
Приложения для 32-разрядной версии Windows должны иметь функцию WinMain. Эта функция регистрирует классы окна и определяет цикл обработки сообщений приложения.
Функция WinMain имеет следующее формальное описание:
int PASCAL WinMain(HINSTANT hinst, HINSTANT hPreInst, LPSTR IpszCmdLine,
int nCmdShow) // hinst - указывает дескриптор экземпляра приложения;
// hPreInst - указывает дескриптор предыдущего экземпляра приложения или 0;
// IpszCmdLine - указатель на буфер, в котором содержатся параметры командной // строки;
// nCmdShow - способ отображения главного окна:
// SWJ5HOWMINNOFCTIVE - отображать в виде пиктограммы;
// SWJ5HOWNORMAL - отображать в нормальном представлении.
{
операторы_программы
}
Регистрация класса окна происходит в том случае, если в приложении объявлена переменная типа WNDCLASS. При инициализации структуры WNDCLASS следует указать функцию окна, отвечающую за обработку сообщений, направляемых этому окну. Функция окна, как правило, содержит оператор switch-case, анализирующий приходящие окну сообщения и вызывающий соответствующие методы обработки.
Основной составляющей любого приложения является цикл обработки сообщений, передаваемых от Windows приложению.
// цикл обработки сообщений while (GetMessage (&lpMsg, NULL, 0, 0))
TranslateMessage (&lpMsg);
DispatchMessage ((&lpMsg);
}
Метод TranslateMessage используется при обработке сообщений от клавиатуры. Метод DispatchMessage направляет получаемые сообщения соответствующей функции окна.
21. Структура Windows-приложения, использующего библиотеку mfc
Применение библиотеки MFC не только значительно упрощает процесс создания приложения, но и позволяет уменьшить размер исходного кода (приблизительно в 2-3 раза). Для подключения этой библиотеки следует ввести: include <afxwin.h>.
Точкой начала выполнения приложения можно считать метод InitInstance главного класса приложения.
Структура Windows-приложения, использующего библиотеку классов MFC, может иметь следующее формальное описание:
include <afxwin.h>
class MyApp : public CWinApp
(public: virtual BOOL InitInctance();};
BOOL MyApp::InitInctance() (// точка начала выполнения программы
return TRUE;} MyApp NewApp; // вызов конструктора приложения
Классы архитектуры приложения
« Библиотека MFC условно подразделена на несколько категорий классов. Одной из таких категорий являются классы архитектуры приложения (Application Architecture Classes). Эти классы обеспечивают поддержку на уровне приложения.
AppWizard позволяет автоматически создавать различные типы приложений, использующие классы данной категории. Это могут быть приложения, реализующие диалоги, SDI-интерфейс (Single Document Interface) или MDI-интерфейс (Multiple Document Interface). Приложения с SDI и MDI интерфейсом относятся к приложениям с архитектурой документ/отображение (document/view). Приложение с архитектурой документ/отображение может содержать несколько классов документов, отображений и окон-рамок. Класс документа реализует работу с представлением данных, класс отображения реализует отображение данных, а класс окна-рамки предназначен для манипулирования областью экрана. С одним документом может быть соотнесено несколько различных классов отображения.
Все MFC-приложения имеют как минимум два объекта: объект приложение, производный от класса CWinApp, и объект главное окно, производный от класса CWnd или его потомков - классов CFrameWnd, CMDIFrameWnd и CDialog. В каждом приложении создается только один-единственный объект приложение.
Приложения с архитектурой документ/отображение содержат объекты как минимум трех следующих классов (или производных от них классов):
CWinApp - объект приложение;
CDocument - объект документ;
CView - объект отображение документа.
Библиотека MFC позволяет создавать приложения, реализующие несколько потоков. Однако все приложения должны иметь как минимум один поток, используемый объектом приложения и называемый иногда основным потоком ("primary" thread).
Класс CWinThread инкапсулирует средства управления множеством потоков. Этот класс можно рассматривать как базовый класс для управления потоками. Дополнительно библиотека MFC предоставляет классы синхронизации объектов для обеспечения в C++ интерфейса синхронизации объектов, как в Win32.