Юрий Щупак
фщ^Зшжш H!*fi#M^
Win32 API
Эффективная разработка
приложений
1^ППТЕР*
Москва • Санкт-Петербург ¦ Нижний Новгород ¦ Воронеж
Новосибирск ¦ Ростов-на-Дону • Екатеринбург ¦ Самара
Киев ¦ Харьков ¦ Минск
2007
ББК 32. 973-018. 2
УДК 004. 451
Щ96
Щупак Ю. А. Щ96 Win32 API. Эффективная разработка приложений. — СПб. : Питер, 2007. —
572 с: ил. ISBN 5-469-01361-8
В этой книге изложены основополагающие принципы программирования для Windows на языке С/С++
с применением Win32 API. Книга ориентирована на широкий круг читателей: от начинающих программистов, студентов вузов,
аспирантов и преподавателей до профессионалов в области программирования, желающих освоить
специальные средства Win32 API. Практика показывает, что те программисты, которые начинают осваивать программирование для
Windows сразу на уровне MFC или Windows Forms, не имея никакого опыта работы с Win32 API,
сталкиваются с серьезными проблемами, как только дело доходит до создания реальных приложений. Напротив, опыт программирования с Win32 API позволяет осваивать более высокие технологии гораздо
гармоничней и продуктивней. Владение базовыми знаниями Win32 API является надежной основой для вашего профессионального
роста в сфере программирования. ББК 32. 973-018. 2
УДК 004. 451
Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без
письменного разрешения владельцев авторских прав. Тем не менее, имея в виду возможные человеческие или технические ошибки, издательство не может гарантировать
абсолютную точность и полноту приводимых сведений и не несет ответственности за возможные ошибки, связанные
с использованием книги. ISBN 5-469-01361-8
© ЗАО Издательский дом «Питер», 2007
Краткое содержание
Предисловие 15
Глава 1. «Hello, World!», или Первые шаги
к пониманию основных концепций Windows 18
Глава 2.
GDI — графический интерфейс
устройства. Рисование линий, фигур, текста 60
Глава 3. GDI. Палитры, растры, метафайлы 161
Глава 4. Средства ввода 215
Глава 5. Ресурсы Windows-приложения 244
Глава 6. Меню и быстрые клавиши 274
Глава 7. Диалоговые окна 306
Глава 8. Элементы управления общего пользования 381
Глава 9. Многозадачность 444
Глава 10. Таймеры и время 488
Глава 11. Специальные приложения 517
Приложение 1. Интегрированная среда Visual C++ 6. 0 541
Приложение 2. Интегрированная среда Visual Studio. NET. . 555
Приложение 3. Работа с утилитой Spy++ 562
Литература 565
Алфавитный указатель 566
Содержание
Предисловие 15
Кому адресована эта книга 16
Как работать с книгой 16
Благодарности 17
От издательства 17
Глава 1. «Hello, World!», или Первые шаги
к пониманию основных концепций Windows 18
Базовые концепции 18
Графический интерфейс пользователя 18
Многозадачность 19
Управление памятью 20
Независимость от аппаратных средств 21
Вызовы функций и DLL 21
Объектно-ориентированное программирование 22
Типы данных Win32 22
Архитектура, управляемая событиями 23
Оконная процедура 24
Оконные классы 25
Цикл обработки сообщений 26
Наипростейшая программа для Windows 26
Программа «Hello, world!» — первый вариант 31
Файл исходного текста программы 33
Регистрация класса окна 34
Создание окна 37
Использование функции CreateWindowEx 40
Отображение окна на экране 41
Обработка сообщений 42
Оконная процедура 44
Содержание 7
Программа «Hello, world!» — второй вариант 48
Функции поддержки окон 51
Часто используемые сообщения 52
Модификация характеристик окна 53
Особенности программирования для Windows 54
Синхронные и асинхронные сообщения 55
Посылка сообщений из приложения 56
Использование глобальных или статических переменных 57
Получение дескриптора экземпляра приложения 57
Предотвращение зависания приложения
в случае медленной обработки отдельных событий 58
Использование утилиты Spy++ 59
Глава 2.