- •Московская финансово-промышленная академия
- •Содержание
- •Глава 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. Линейки прокрутки
2.2. Взаимодействие Windows с программой
Во многих операционных системах взаимодействие с системой инициирует программа пользователя. Например, в DOS она выполняет запросы к системе при необходимости осуществить ввод/вывод данных. Таким образом, программы, написанные в традиционном стиле, сами обращаются к операционной системе.
Однако Windows работает не так. Именно Windows обращается к Вашей программе. Этот процесс выглядит следующим образом. Программа ожидает сообщения, посылаемого ей Windows. Сообщение передается в программу посредством вызова специальной функции, который также выполняется из Windows. После получения сообщения программа может выполнять некоторые действия. Эти действия могут включать вызов одной или нескольких функций API и именно Windows инициирует их. Такое базирующееся на сообщениях взаимодействие программы и операционной системы более чем что-либо другое определяет схему построения всех программ для Windows.
В Windows существует множество различных типов сообщений. Например, каждый раз при щелчке мыши в пределах окна программы ей будет направлено сообщение о нажатии кнопки мыши. Сообщение другого типа посылается программе всякий раз, когда принадлежащее ей окно должно быть перерисовано. Сообщения иного типа приходят, если нажата клавиша на клавиатуре в то время, когда Ваше окно имеет фокус ввода (т.е. ввод с клавиатуры направляется Вашему окну). Твердо запомните: когда программа начинает работать, сообщения к ней приходят неупорядоченным образом, т.е. Вы никогда не знаете, какое сообщение будет следующим. Таким образом, программы для Windows напоминают программы, работающие по прерываниям.
2.3. Win32 api: прикладной интерфейс для Windows
Каждая программа может получить доступ к ресурсам Windows, используя множество функций Программного Интерфейса Приложений (Application Program Interface, API). API состоит из нескольких сотен функций, которые при необходимости могут вызываться из программы. Функции API обеспечивают доступ ко всем ресурсам Windows. Подмножество API, называемое Интерфейс Графических Устройств (Graphics Device Interface, GDI), обеспечивает поддержку независимой от оборудования графики. Именно функции GDI делают возможным работу Windows на весьма разнообразном оборудовании.
Поскольку Windows поддерживает линейную 32-разрядную адресацию, некоторые типы данных изменили свою размерность: типы int и unsigned стали 32-битными, а не 16-битными, как это было в старых версиях операционной системе Unix. Если Вам понадобится 16-битное целое число, придется определить его как short (как Вы увидите, Windows обеспечивает переносимые типы данных, определенные с помощью typedef). Таким образом, при переносе программ, написанных для 16-разрядной среды, в Windows необходимо тщательно проверять правильность использования переменных типа int и unsigned поскольку они будут автоматически расширены до 32 бит, что может вызвать нежелательные посторонние эффекты.
Другая особенность 32-разрядной адресации состоит в том, что при объявлении указателей не требуется их определение как near или far. В Windows эти типы определены как «пусто». Это означает, что их можно не удалять из текста программы, поскольку эти определения не будут иметь никакого действия.