- •Московская финансово-промышленная академия
- •Содержание
- •Глава 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.2. Представляем меню
Меню в Windows являются наиболее распространенным элементом управления. Все главные окна программ имеют связанные с ними меню. Поскольку меню так распространены и важны для приложений, Windows обеспечивает для них достаточно мощные средства поддержки. Включение меню в программу требует следующих шагов:
1) определение формы меню в файле ресурсов;
2) загрузка меню при создании главного окна в программе;
3) обработка событий меню.
Меню верхнего уровня отображаются в Windows вверху, под заголовками окон. Подменю отображаются как выпадающие меню. (Вам придется привыкнуть к этому способу, поскольку он используется во всех Windows-программах.)
Далее, прежде чем продолжить изучение вопросов, связанных с меню, следует рассмотреть, что представляют собой ресурсы Windows-приложений.
4.3. Использование ресурсов
Некоторые типы объектов определяются в Windows как ресурсы. Ресурсы – это объекты, которые используются в программе, но не определяются в ней. Это касается меню, иконок, диалогов и графических растровых изображений. Поскольку меню является ресурсом, прежде чем включать его в программу, необходимо изучить, как работать с ресурсами.
Ресурсы создаются отдельно от текстов программы и добавляются в ЕХЕ-файл при компоновке программы. Они содержатся в файлах ресурсов, имеющих суффикс RC. Имя файла ресурсов иногда совпадает с именем ЕХЕ-файла Вашей программы. Например, если именем программы является Example.exe, файл ресурсов можно назвать как Example.rc (однако – это совсем необязательно).
Некоторые ресурсы являются текстовыми файлами, которые могут создаваться при помощи обычного текстового редактора. Такие текстовые ресурсы обычно описываются внутри файла ресурсов. Некоторые ресурсы, такие как иконки, проще всего строить, используя редактор ресурсов; но файл ресурсов, тем не менее, должен содержать ссылки на них. Примеры файлов ресурсов, приведенные в этой главе, являются просто текстовыми файлами, поскольку меню описываются с помощью обычного текста.
Файлы ресурсов не являются программами на С или C++. Они используют специальный язык ресурсов и компилируются компилятором ресурсов, генерирующим из RC-файлов специальные RES-файлы, которые могут компоноваться с Вашей программой.
Компиляция RC-файлов. Файлы ресурсов непосредственно не используются Вашей программой, – они должны быть преобразованы во внутренний формат, используемый при компоновке. После создания RC-файла необходимо скомпилировать его в RES-файл, используя компилятор ресурсов (компилятор ресурсов чаще всего называется rc.exe, но может иметь и другое имя). Как компилировать ресурсы – зависит от используемого Вами компилятора. Кроме того, некоторые интегрированные средства программирования делают это автоматически. В любом случае в результате будет получен RES-файл, который нужно скомпоновать с Вашей программой, чтобы получить готовое приложение для Windows.
Замечание: просмотрите раздел Руководства пользователя для Вашего компилятора, в котором говорится об использовании файлов ресурсов.
Создание простого меню. Прежде чем использовать меню в программе, нужно определить его содержимое в файле ресурсов. Все определения меню имеют следующий вид:
MenuName MENU [параметры]
{
элементы меню
}
Здесь MenuName – это имя меню (оно может быть также макроименем, представляющим целочисленный идентификатор меню, однако все примеры, приведенные в книге, для обращений к меню будут использовать строковые имена). Ключевое слово MENU обозначает начало определения меню. Имеется также несколько параметров, которые могут быть указаны при создании меню. Они приведены в 4.3; их макроимена определены все в том же файле Windows.h. Все примеры этой книги просто используют параметры по умолчанию и не задают их в описаниях меню.
Таблица 4.3