- •Московская финансово-промышленная академия
- •Содержание
- •Глава 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. Линейки прокрутки
Глава 4. Ресурсы и меню
Вы уже знакомы со структурой программ для Windows, которые принимают и обрабатывают сообщения. Настало время разобраться с компонентами пользовательского интерфейса Windows. Если Вы только начали изучать программирование под Windows, важно запомнить, что чаще всего Ваши приложения будут взаимодействовать с пользователем, используя одну или более предопределенных компонент интерфейса.
В Windows имеется различные элементы интерфейса. В данной главе обсуждаются два из них: окна сообщений и меню. Это наиболее важные компоненты интерфейса Windows. Практически все написанные Вами программы будут их использовать. В Windows предопределены основные стили окон сообщений и меню, – необходимо только заполнить их соответствующей информацией.
В данной главе вводится также понятие ресурсов, которые являются важной частью почти всех Windows-приложений.
4.1. Окна сообщений MessageBox
Окно сообщения – это самый простой элемент интерфейса. Оно отображает некоторое сообщение и ожидает реакции пользователя. Можно создавать окна сообщений, предусматривающие несколько вариантов действий пользователя, но, вообще говоря, целью окна сообщения является просто информирование пользователя о свершении некоторого события.
Для создания окна сообщения следует использовать функцию API MessageBox(), которая имеет прототип:
int MessageBox(HWND hwnd,
LPCSTR lpText, LPCSTR lpCaption,
UINT wMBType);
Параметр hwnd – это дескриптор родительского окна; параметр lpText – указатель на строку сообщения, отображаемую внутри окна сообщения; lpCaption указывает на строку, используемую в качестве заголовка окна сообщения. Параметр wMBType является комбинацией значений, которые определяют свойства окна сообщения, включающие типы «кнопок», которые должны присутствовать, и дополнительную иконку рядом с текстом сообщения. Эти макросы определены в файле windows.h. Необходимый набор свойств можно получить объединив эти значения при помощи логического сложения. Функция MessageBox() возвращает значение, соответствующее действию пользователя. Соответствующие кнопки могут присутствовать в зависимости от значения wMBType. В таблице 4.1 приведены возможные возвращаемые значения этой функции.
Таблица 4.1
Значения функции MessageBox
№ |
Нажатая кнопка |
Возвращаемое значение |
1 |
Abort |
IDABORT |
2 |
Retry |
IDRETRY |
3 |
Ignore |
IDIGNORE |
4 |
Cancel |
IDCANCEL |
5 |
No |
IDNO |
6 |
Yes |
IDYES |
7 |
OK |
IDOK |
Чтобы окно сообщения появилось на экране, просто вызовите функцию MessageBox(), Windows отобразит окно сообщения при первой же возможности. При этом не нужно получать контексты устройств или обрабатывать какие-либо сообщения. В данном случае Windows делает все это самостоятельно. (Простота использования делает окна сообщений прекрасным средством отладки, когда необходимо просто и быстро вывести что-либо на экран.) Некоторые значения, которые могут быть использованы для wMBType, приведены в таблице 4.2.
Таблица 4.2