Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Взаимодействие Win-диалогов с пользователем






 

Диалог взаимодействует с пользователем посредством одного или нескольких элементов управления. Элемент управления представляет собой особый тип окна, предназ­наченный для ввода или вывода информации. Элементы управления обычно имеют родительское окно, которым в примерах данной главы является диалог. Windows поддерживает несколько типов элементов управления, включая кнопки (buttons), контрольные переключатели (check boxes), селекторные кнопки (radio buttons), списки (list boxes), окна ввода (edit boxes), комбинированные списки (combo boxes), линейки прокрутки (scroll bars) и статические элементы (statics).

· Кнопка (button) – это имитация кнопки на экране, которую пользователь активизирует щелчком мыши или нажав [Enter], предварительно выбрав управ­ляющий элемент клавишей [Tab]. Вы раньше уже использовали кнопки в окнах сообщений (например, кнопка ОК).

· Контрольный переключатель (check box) содержит один или более элементов, которые могут быть отмечены или не отмечены. Если элемент отмечен, соответ­ствующий параметр считается выбранным. Одновременно могут быть два или более контрольных переключателей.

· Селекторная кнопка (radio button) представляет собой почти то же самое, что и контрольный переключатель, с той разницей, что одновременно можно выбрать только одну кнопку.

· Список (list box) представляет собой список элементов, из которых пользователь может выбрать один (или более). Списки часто используются для отображения на экране, например, имен файлов.

· Окно ввода (edit box) позволяет пользователю ввести строку символов. Окна ввода поддерживают все необходимые для этого возможности. Таким образом, для получения строки ввода программа просто отображает диалог и ожидает, пока пользователь не закончит ввод требуемой строки.

· Комбинированный список (combo box) является комбинацией списка и окна ввода.

· Линейка прокрутки (scrollbar) используется для прокрутки документа в окне.

· Статический элемент (static) предназначен для отображения информации, кото­рая не может быть изменена пользователем, и используется для вывода текста или графики.

 

Примеры, приведенные в этой главе, иллюстрируют три типа элементов управ­ления: кнопки, списки и окна ввода. Позже будут рассмотрены и другие элементы управления.

Следует отметить, что элементы управления не только генерируют сообщения (при определенных действиях пользователя), но и принимают их (от Вашего приложения). Сообщения, генерируемые элементами управления, инициируют действия пользователя. Сообщения для элементов управления представляют собой команды, на которые эти элементы должны реагировать. Примеры работы с такими сообще­ниями Вы найдете далее в данной главе.

Диалоги бывают двух типов: модальные и немодальные. В большинстве случаев используются модальные диалоги. Это означает, что программа дожидается завершения диалога, и только затем ее выполнение будет продолжаться. Модальный диалог не позволяет также переключить ввод на другие окна, порожденные приложением.

Немодальный диалог не задерживает выполнение программы, то есть для ее продолжения не требуется завершение диалога. При этом разрешается переключение между диалогом и другими окнами приложения.

Сначала рассмотрим организацию работы с модальными диалогами, поскольку они встречаются чаще. Пример использования немодального диалога завершает данную главу.

 

5.2. Модальные диалоги: обработка сообщений

 

Диалог является окном (точнее, специальным типом окна). Все события внутри диалога передаются программе посредством механизма сообщений, как это делается и в главном окне. Однако сообщения диалога не передаются в функцию главного окна программы. Для создаваемого диалога необходимо определить собственную функцию, которая называется функцией диалога или оконной функцией диалога. Эта функция должна иметь следующий прототип (конечно, имя функции Вы можете выбрать сами):

 

BOOL CALLBACK DFunc(HWND hwnd, UINT message,

WPARAM wParam, LPARAM lParam);

 

Как видите, функция диалога имеет те же параметры, что и оконная функция. Вместе с тем она отличается от оконной функции и типом возвращаемого значения – она возвращает одно из значений: истина или ложь. Как и оконная функция, функция диалога может принимать и обрабатывать множество сообщений. Если сообщение обрабатывается диалоговой функцией, возвращаемое значение должно быть TRUE, в противном случае – FALSE.

Каждому элементу управления в диалоге присваивается собственный идентификатор. При воздействии пользователя на элемент управления в диалоговую функцию посылается сообщение, содержащее идентификатор этого элемента и тип действия пользователя. Диалоговая функция анализирует эту информацию и выполняет соответствующие действия. Этот процесс выполняется параллельно с обработкой сооб­щений в оконной функции.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.