Сама таблица откликов содержит единственный
Сама таблица откликов содержит единственный макрос EV_COMMAND (с указанием функции отклика CmAdd()), так как из всех составляющих диалогового окна мы будем напрямую обрабатывать
Диалоговые окна 261
только сообщения от кнопки "Добавить". Сообщения от остальных элементов диалога (полей ввода и альтернативных кнопок) будут обрабатываться встроенными средствами OWL, описанными ниже.
При выборе пункта "Ввод данных" главного меню вызывается (через таблицу откликов класса Му-Window) функция CmInput(). В ней обнуляется массив карточек, после чего создается объект диалогового окна и для него вызывается функция Execute(). Пользователю предоставляется возможность заполнить карточки базы данных требуемым содержимым. После завершения работы с диалогом (нажатием кнопки "ОК") функция Execute() завершается, управление возвращается в функцию CmInput(), и с помощью вызова функции Invalidate() инициируется перерисовка главного окна, в которое выводится информация из всех заполненных карточек базы данных.
Рассмотрим теперь вопрос о взаимодействии с управляющими элементами диалога. В нашем примере требуется извлекать данные из полей ввода диалогового окна (а также направлять в поля ввода данные, если мы хотим заполнять эти поля не с клавиатуры, а программно) и получать информацию о нажатии альтернативных кнопок "М" и "Ж". Для реализации встроенных средств коммуникации с управляющими элементами диалога необходимо прежде всего определить специальную структуру - буфер обмена, элементы которого соответствуют данным, поступающим от управляющих элементов. В нашем примере эта структура получила наименование TSB (от Transfer Buffer); в нее входят три символьные строки для приема данных из полей ввода и две булевы переменные для получения информации о состоянии альтернативных кнопок. Длина символьных строк, определенных в структуре TSB, задает максимальное число символов, которое можно будет ввести в соответствующую строку. При определении длины строк не следует забывать о завершающем символьную строку нуле; именно из-за него строка yearEdit. для приема года имеет длину не 4, а 5 байт.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий