- •Московская финансово-промышленная академия
- •Содержание
- •Глава 1. Модель программирования приложений
- •1.1. Потребительские свойства Windows
- •1.2. Процессы в Windows и потоковая многозадачность
- •1.3. Динамические библиотеки
- •1.4. Программное обеспечение для создания Win-приложений
- •Спецификация префиксов венгерской нотации
- •Глава 2. Обзор возможностей программирования
- •2.1. Общий взгляд на программирование в Windows
- •2.2. Взаимодействие Windows с программой
- •2.3. Win32 api: прикладной интерфейс для Windows
- •2.4. Компоненты окна
- •2.5. Основы приложений Windows
- •2.6. Каркас приложения Windows
- •2.7. Определение класса окна
- •Значения параметра lpszName
- •Наиболее употребляемые макросы для встроенных курсоров
- •Типы системных кистей
- •2.8. Создание окна
- •Наиболее распространенные стили
- •Параметры способа отображения nHow
- •2.9. Цикл обработки сообщений
- •2.10. Оконная функция
- •Типы префиксов
- •Глава 3. Обработка сообщений Windows
- •3.1. Что такое сообщения?
- •3.2. Обработка нажатая клавиш
- •Битовая карта lParam
- •3.3. Обработка сообщений wm_paint
- •3.4. Обработка сообщений «мыши»
- •3.5. Генерация сообщения wm_paint
- •3.6. Генерация сообщений таймера
- •Глава 4. Ресурсы и меню
- •4.1. Окна сообщений MessageBox
- •Значения функции MessageBox
- •Значения wMbType
- •4.2. Представляем меню
- •4.3. Использование ресурсов
- •Параметры menu
- •Параметры элементов меню
- •4.4. Включение меню в программу. Обработка команд
- •4.5. Включение акселераторов сменю
- •4.6. Загрузка таблицы акселераторов
- •Глава 5. Создание диалогов
- •5.1. Взаимодействие Win-диалогов с пользователем
- •5.2. Модальные диалоги: обработка сообщений
- •5.3. Активизация и создание простейшего диалога
- •5.4. Определение ресурсов диалога
- •Стили диалога
- •5.5. Оконная функция диалога
- •5.6. Основы работы со списками
- •Типы сообщений
- •5.7. Инициализация списка и выбор элементов
- •5.8. Окно ввода
- •5.9. Использование немодального диалога
- •Глава 6. Графические образы, иконки и курсоры
- •6.1. Иконка и курсор
- •6.2. Определение малой иконки
- •6.3. Работа с растровыми изображениями
- •Значения параметра dwRaster
- •6.4. Работа с несколькими растровыми изображениями
- •Глава 7. Более подробно об элементах управления
- •7.1. Работа с контрольными переключателями
- •7.2. Статические элементы
- •7.3. Работа с селекторными кнопками
- •7.4. Линейки прокрутки
Глава 5. Создание диалогов
В данной главе вводится понятие диалога. Это наиболее важный после меню элемент интерфейса. Диалог является специальным типом окна, поддерживающим гибкие средства, используя которые пользователь может взаимодействовать с программой. Вообще диалоги позволяют выбирать или вводить информацию, которую сложно или даже невозможно ввести, используя меню.
Диалоги и элементы управления, содержащиеся в них, – это довольно большая тема. В настоящей главе изложены только основы работы с диалогами, включая их создание и обработку необходимых сообщений. В последующих главах диалоги будут использоваться для изучения некоторых элементов интерфейса Windows.
5.1. Взаимодействие 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) предназначен для отображения информации, которая не может быть изменена пользователем, и используется для вывода текста или графики.
Примеры, приведенные в этой главе, иллюстрируют три типа элементов управления: кнопки, списки и окна ввода. Позже будут рассмотрены и другие элементы управления.
Следует отметить, что элементы управления не только генерируют сообщения (при определенных действиях пользователя), но и принимают их (от Вашего приложения). Сообщения, генерируемые элементами управления, инициируют действия пользователя. Сообщения для элементов управления представляют собой команды, на которые эти элементы должны реагировать. Примеры работы с такими сообщениями Вы найдете далее в данной главе.
Диалоги бывают двух типов: модальные и немодальные. В большинстве случаев используются модальные диалоги. Это означает, что программа дожидается завершения диалога, и только затем ее выполнение будет продолжаться. Модальный диалог не позволяет также переключить ввод на другие окна, порожденные приложением.
Немодальный диалог не задерживает выполнение программы, то есть для ее продолжения не требуется завершение диалога. При этом разрешается переключение между диалогом и другими окнами приложения.
Сначала рассмотрим организацию работы с модальными диалогами, поскольку они встречаются чаще. Пример использования немодального диалога завершает данную главу.