
- •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.
- •Согласование экспортируемых элементов с импортируемыми
37.Обработка сообщений от клавиатуры и мыши(wm_char,wm_keYxxx,wm_xButtoNxxx,
WM_NCHITTEST)
Работа Win приложений основана на обработке сообщений. При работе с устройствами ввода/вывода компа, драйверы этих устройств создают сообщения, описывающие эти действия. Каждое нажатие на клавиши клавиатуры вызывает генерацию ряда сообщений, определяющих, какая клавиша нажата. Перемещение мыши вызывает сообщ., описывающие траекторию перемещения указателя мыши… Сообщения сначала попадают в системную очередь ОС, из нее передаются приложениям, которым они предназначены, и записываются в очередь приложений. Каждое приложение имеет собственную очередь сообщений.
В MFC за обработку сообщений отвечают классы. Любой класс ,наследованный от базового класса CcmdTarget, может обрабатывать сообщения. Чтобы класс смог обрабатывать сообщения, необходимо, чтобы он имел таблицу сообщений класса. В этой таблице для каждого сообщения указан метод класса, предназначенный для его обработки. Сообщения, которые могут обрабатываться приложением ,построенным на основе библиотеки классов MFC, подразделяются в зависимости от процедуры их обработки на 3 группы:
Оконные сообщения
Сообщения от органов управления
Команды
Таблица сообщений: Message Map состоит из набора спец. Макрокоманд, ограниченных BEGIN_MESSAGE_MAP и END_MESSAGE_MAP. Между ними расположены макрокоманды ,отвечающие за обработку отдельных сообщений. В MFC определены несколько макрокоманд, отвечающих за обработку сообщений. Одна из них: ON_WM_<name>- для обработки стандартных сообщений Windows. Вместо <name> указывается имя сообщения без префикса WM_. Для обработки сообщений, определенных в таблице макрокомандами ON_WM_<name> вызываются одноименные методы. Имя метода обработчика соответствует названию сообщения.
Ввод с клавиатуры- двухэтапный процесс. Windows посылает окну сообщения WM_KEYDOWN и WM_KEYUP с кодами виртуальных клавиш, но прежде чем эти сообщения доходят до окна, они транслируются. Если введен символ ANSI (в результате чего генерируется сообщение WM_KEYDOWN), то ф-ия трансляции проверяет состояние регистра клавиатуры и посылает сообщение WM_CHAR с соответсвующим кодом символа- либо верхнего, либо нижнего регистра. Клавиши перемещения курсора и функциональные клавиши не имеют соответсвующих кодов символов, поэтому для них трансляция не требуется. Окно получает только сообщения WM_KEYDOWN и WM_KEYUP.
38 Таймеры, использование времени простоя программы и локального цикла обработки сообщений.
1)Использование таймеров:
Таймеры задаются в Windows функцией
SetTimer
SetTimer(1,1000) 1-идентификатор таймера, 1000-задержка мсек
В конце работы с таймером используется функция
KillTimer(1);
Если SetTimer – глобальная, то HWND окна надо использовать
Сообщение от Timer по умолчанию получает окно
Void OnTimer(…)
{ static int InTimer = 0;
if(InTimer)return;
InTimer=1;
InTimer=0;
}
2)Использование времени простоя в классе CwinApp
есть функция
OnIdle(LONG Count) – вызывается во время простоя
(кол-во вызовов этой ф-ии – счётчик)
3)Использование локального цикла обработки сообщений
Void WaitIdle()-название условное(любое)
{MSG msg;
while(Prev Message(& msg, 0, 0, 0, PM_NOREMOVE))
{Get Message(& msg, 0, 0, 0);
Translate Message(& msg);
Dispatch Message(& msg);