
- •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.
- •Согласование экспортируемых элементов с импортируемыми
35. Передача информации в диалог и обратно.
Для того чтобы можно было обмениваться данными с диалогом, необходимо прежде всего определить в вашем классе соответ. члены, которые смогут принимать и передавать эти данные.
Начальные значения данных устанавливаются в переопределенной функции OnInitDialog или в конструкторе нашего класса соответ. диалога.
Также необходимо ввести список элементов управления и соответ. им типов переменных:
Текстовое поле (EDIT BOX) CString, int UINT, long, DWORD, float, double, BOOL
Обычный флажок (CHECK BOX) BOOL
Неотсортирированный список (LISTBOX) CString, int
Комбинированный список (COMBOBOX) CString, int
Все остальные виды списков CString
После того как были определены источник и приемник данных, а также их типы, пришло время ознакомится с тем, каким образом осуществляется обмен. Для организации обмена нужны две фун-ции:
BOOL CWnd:: UpdateData (BOOL bSaveAndValidate = TRUE) // - пар. BSaveAndValidate – определяет направленность действий. Если он равен True, то данные введенные пользователем в диалог, записываются в соответствующие переменные класса. Она вызывается в фун-ции CDialog::OnInitDialog с параметром равным FALSE, для инициализации данных при создании модального блока диалога, и в фу-ции CDialog::OnOk с параметром равным TRUE, для получения и проверки на допустимость данных из диалога, если он закрыт при помощи кнопки Ok. Ее основное назначение – инициализация и обработка ошибок при обращении к след. фу-ции: //
virtual void CWnd:: DoDataExchange (CdataExchange *pDX ) // - эта фу-ция, используя параметр pDX (указательна объект класса CdataExchange), и ‘занимается’ обменом данных и проверкой их корректности. Ее необходимо переопределить для каждого класса диалога, который должен обеспечивать взаимодействие с пользователем. //
Общая схема обмена данными:
(рис 35.1)
Объект pDX класса DoDataExchange, имеет флаг направления:
BOOL CdataExchange :: m_bSaveAndValidate // - указ. направ. при операциях обмена данными (DDX). Значение TRUE задает передачу данных от элементов управления диалога к членам соответ. класса, а значение FALSE - в обратном направ. При операциях проверки корректности данных (DDV) всегда установлен в TRUE.
Кроме этого в классе CdataExchange имеются еще члены :
BOOL CdataExchange:: m_pDlgWnd
- // указатель на объект класса CWnd (обычно CDialog), для которого осуществ. обмен и проверка корректности введенных данных;
HWND CddataEXchange:: PrepareCtrl (int nIDC)
- // подготавливает элементы управления к обмену данными. Подготовка заключается в сохранении дескриптора (HWND) элемента управления в классе CddataEXchange.
После того как мы определим свою ф-ию DoDataExchange, необходимо вставить в нее требуемые фу-ции DDX, по одной на каждый элемент управления, участвующий в обмене. Мы не можем вызывать фу-цию проверки корректности введенных польз. данных (DDV) без вызова соовет. фу-ии обмена (DDX). Фу-ция DDV должна след. зы фу-цией DDX этого элемента управления. Фу-ции имеют след. формат вызова:
DDX_XXX (pDX, nIDC, member) -// для обмена данными
и
DDV_XXX (pDX, member, …)
// для проверки корректности введенных данных. Пар. XXX – имя соответ. фу-ции (такой как DDX_Check или DDV_MinMaxInt), pDX – указатель на объект CdataExchange, nIDC – индентификатор элемента управления, с которым производится обмен данными, и member – член класса участв. в обмене.