
- •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.
- •Согласование экспортируемых элементов с импортируемыми
28.Работа с диалогами. Обработка сообщений.
Блоки диалога бывают двух типов — модальные (modal) и немодальные (modeless). Разница между ними заключается в способе управления потоками сообщений. Модальные блоки диалога блокируют все остальные окна приложения так, что пользователь не может с ними ничего сделать, пока не закроет его. Другими словами, они отсекают поток сообщений, идущих от мыши и клавиатуры к его родительским окнам или окнам того же уровня (sibling), делая их недоступными. Если пользователь все же пытается взаимодействовать с недоступным окном, то система предупреждает об этом звуковым сигналом. Блоки диалога этого типа обычно не препятствуют переключению с одного приложения на другое. В редких случаях можно использовать системные модальные блоки диалога, которые позволяют пользователю работать внутри лишь одного блока диалога и не позволяют переключаться ни на какие другие приложения.
Немодальные блоки диалога больше похожи на обычные окна, т. к. они дают пользователю возможность доступа к остальным окнам приложения. Это связано с тем, что блоки диалога этого типа не прерывают потоков сообщений, идущих в любую часть вашей программы.
Создание и использование блока диалога, модального и не модального, требует одновременного наличия трех компонент: 1) шаблона блока диалога 2)Программного кода, создающего и отображающего его на экран 3)Диалоговой процедуры, которая обслуживает взаимодействие пользователя с диалогом.
Формирование шаблона блока диалога включает создание объекта ресурсов, который описывает форму, размер и расположение на экране блока диалога и каждого из его внутренних элементов управления. Данный объект помешается в файл ресурсов приложения вместе с другими объектами (значками, меню, битовыми образами и т. д.). После того как шаблон сформирован, можно приступать к созданию программного кода, способного вызывать появление блока диалога на экране и его последующее удаление.
Класс CDialog - Основное назначение этого класса состоит в предоставлении интерфейса программирования для управления блоками диалога. Использование класса CDialog позволяет создавать объекты обоих типов блоков диалога -модальные и немодальные. Блок диалога подобен любому другому окну Windows, но в отличие от других типов окон, объект этого класса является комбинацией класса CDialog или производного от него и шаблона диалога.
Для создания блока диалога исполь-ся ф-ция:
virtual int CDialog::DoModal() —создает и активизирует модальный блок диалога Windows, осуществляет полное взаимодействие с пользователем и удаляет блок диалога после завершения работы, возвращая целое значение типа IDOK или IDCANCEL, позволяющее определить конечный результат его работы. Если функция не смогла создать блок диалога, то она возвращает -1.
InitModalIndirect() – способ создания модального блока диалога.
Для создания объекта модального блока диалога ип-ся ф-ция Cdialog();
CreateIndirect() - способ создания немодального блока диалога опирающийся на шаблон, созданный в памяти.
void CDialog::EndDialog(int nResult) —она не закрывает блок диалога сама, а только устанавливает флажок, чтобы закрыть его, как только закончится обработка текущего сообщения.
virtual void CDialog: :OnCancel() —просто завершает работу с модальным блоком диалога, вызывая EndDialog, и возвращает IDCANCEL.
Несмотря на то что блок диалога представляет собой стандартное окно Windows, для него имеются свои специфические сообщения. Одним из основных является WM_INITDIALOG. Это сообщение посылается процедуре блока диалога во время вызова функций Create, Create Indirect или DoModal после того, как были созданы окна всех его элементов управления, но до того как они стали видимыми. В ответ на это сообщение процедура блока диалога инициализирует каждый элемент управления. Например, она может заполнить список элементами, с которыми потом будет работать пользователь. В ответ на сообщение WM_INITDIALOG Windows вызывает специальный обработчик:
virtual BOOL CDialog::OnInitDlalog()