Win32 APIПредисловие
Кому адресована эта книга
Как работать с книгой
Благодарности
От издательства
Глава 1. «Hello, World!», или Первые шаги к пониманию основных концепций Windows
Базовые концепции
Графический интерфейс пользователя
Многозадачность
Управление памятью
Независимость от аппаратных средств
Вызовы функций и DLL
Объектно-ориентированное программирование
Типы данных Win32
Архитектура, управляемая событиями
Оконная процедура
Оконные классы
Цикл обработки сообщений
Наипростейшая программа для Windows
Программа «Hello, world!» — первый вариант
Файл исходного текста программы
Регистрация класса окна
Создание окна
Использование функции CreateWindowEx
Отображение окна на экране
Обработка сообщений
Оконная процедура
Программа «Hello, world!» — второй вариант
Функции поддержки окон
Часто используемые сообщения
Модификация характеристик окна
Особенности программирования для Windows
Синхронные и асинхронные сообщения
Посылка сообщений из приложения
Использование глобальных или статических переменных
Получение дескриптора экземпляра приложения
Предотвращение зависания приложения
в случае медленной обработки отдельных событий
Использование утилиты Spy++
Глава 2. GDI — графический интерфейс устройства. Рисование линий, фигур, текст
Контекст устройства
Типы контекстов устройства
Регионы Windows. Отсечение
Контекст дисплея
Использование сообщения WM_PAINT
Контекст принтера
Контекст в памяти (совместимый контекст)
Метафайловый контекст
Информационный контекст
Системы координат и преобразования
Экранные, оконные и клиентские координаты
Типы координатных систем
Физическая система координат
Система координат устройства
Страничная система координат и режимы отображения
Мировая система координат
Получение информации о возможностях устройства
Управление цветом. Вывод пиксела
Цветовое пространство HLS
Цветовое пространство RGB
Определение цвета при работе с палитрой
Вывод пикселов
Атрибуты контекста устройства, влияющие на рисование
Режим рисования. Бинарные растровые операции
Режим смешивания фона и цвет фона графического элемента
Общие операции с графическими объектами
Линии и кривые
Рисование отрезков
Дуги
Кривые Безье
Перья
Стандартные перья
Простые перья
Расширенные перья
Кисти
Стандартные кисти
Пользовательские кисти
Замкнутые фигуры
Прямоугольники
Эллипсы, сегменты, секторы и закругленные прямоугольники
Многоугольники
Регионы и отсечение
Создание регионов
Операции с объектами регионов
Прорисовка регионов
Отсечение
Отображение текста
Наборы символов и кодировки
Unicode
Шрифты
Вывод текста
Полосы прокрутки и вывод текста
Примеры программ
Просмотрщик текстовых файлов
Вывод временной диаграммы
напряжения переменного электрического тока
Глава 3. GDI. Палитры, растры, метафайлы
Палитры
Основные принципы управления палитрами
Системная палитра
Логическая палитра
Растры
Аппаратно-независимые растры
Аппаратно-зависимые растры
DIB-секции
Тернарные растровые операции
Метафайлы
Создание метафайла
Воспроизведение метафайла
Глава 4. Средства ввода
Клавиатура
Фокус ввода
Клавиши и символы
Аппаратные сообщения
Символьные сообщения
Работа с кареткой
Примитивный текстовый редактор
Мышь
Терминология, связанная с мышью
Сообщения мыши
Обработка двойного щелчка
Обработка сообщений от колеса мыши
Рисуем мышью
Эластичные прямоугольники
Улучшенное приложение для просмотра текстовых файлов
Глава 5. Ресурсы Windows-приложения
Редакторы ресурсов
Пиктограммы
Создание пиктограммы с помощью графического редактора
Импорт существующей пиктограммы
Просмотр и редактирование ресурсов приложения
Использование ресурса в приложении
Курсоры
Растровые образы
Ресурсы, определяемые программистом
Доступ к данным в ресурсе
Воспроизведение звуковых файлов
Таблицы строк
Глава 6. Меню и быстрые клавиши
Организация и виды меню
Типы пунктов меню
Системное меню
Клавиатурный интерфейс меню
Статус пунктов меню
Отметка пунктов меню
Пункт меню, применяемый по умолчанию
Определение меню в виде ресурса
Шаблон меню
Вызов редактора меню
Атрибуты пункта меню
Уровни меню
Процедура определения пункта для меню i-го уровня
Процедура определения меню нулевого уровня
Добавление меню к окну приложения
Внесение изменений в меню
Функция CheckMenuItem
Функция CheckMenuRadioItem
Функция EnableMenuItem
Функция ModifyMenu
Функции для получения дескриптора меню
Сообщения меню
Приложение MenuDemo1
Работа с контекстным меню
Определение шаблона контекстного меню
Загрузка меню
Вызов меню
Приложение MenuDemo2
Быстрые клавиши
Модификация определения ресурса меню
Таблица быстрых клавиш
Загрузка таблицы быстрых клавиш
Модификация цикла обработки сообщений
Приложение MenuDemo3
Глава 7. Диалоговые окна
Типы диалоговых окон
Элементы управления в диалоговом окне
Создание и обработка диалогового окна
Шаблон диалогового окна309
Шаблонная система единиц
Модальный диалог
Вызов и использование редактора диалоговых окон
Добавление элемента управления Рисунок
Добавление элементов управления Надпись
Выравнивание элементов управления на форме диалога
Определение диалоговой процедуры и вызов диалога
Изменение атрибутов элемента управления
Использование других элементов управления
Кнопки
Кнопка Owner draw
Флажки
Переключатели
Групповая рамка
Пример использования групповой рамки, флажков и переключателей
Клавиатурный интерфейс и порядок обхода элементов управления
Окно редактирования
Список
Комбинированный список
Немодальный диалог
Различия между модальными и немодальными окнами диалога
Пример использования немодального окна диалога
Окно сообщений
Диалоговые окна общего пользования
Глава 8. Элементы управления общего пользования
Основы применения
Инициализация библиотеки
Создание элементов управления общего пользования
Стили элементов управления общего пользования
Обмен сообщениями
Элементы управления главного окна
Панель инструментов
Окно подсказки
Замена класса KWnd на класс KWndEx
Строка состояния
Другие элементы управления
Индикатор процесса
Регулятор
Счетчик и поле с прокруткой
Создание счетчика
Глава 9. Многозадачность
Объекты ядра
Процессы и потоки
Планирование потоков
Классы приоритетов процесса и приоритеты потоков
Управление процессами
Использование функции CreateProcess
Завершение процесса
Запуск обособленных дочерних процессов
Управление потоками
Функция CreateThread
Функция Sleep
Пример многопоточного приложения
Взаимодействие потоков через глобальную переменную
Синхронизация
Атомарный доступ и семейство Interlocked-функций
Критические секции
Wait-функции
События
Семафоры
Мьютексы
Обмен данными между процессами
Виртуальная память. Адресное пространство процесса
Файлы данных, проецируемые в память
Использование проекции файла для реализации разделяемой памяти
Модель «клиент-сервер»
Обмен данными с помощью сообщения WM_COPYDATA
Приложение ServerApp
Приложение ClientApp
Когда многопоточность реально полезна?
Глава 10. Таймеры и время
Время Windows
Системное время
Измерение малых временных интервалов
Использование счетчика монитора производительности
Использование команды RDTSC
Программирование задержек в исполнении кода
Использование функции Sleep
Использование метода uDelay класса KTimer
Класс QTimer
Стандартный таймер
Первый способ использования стандартных таймеров
Второй способ использования стандартных таймеров
Мультимедийный таймер
Функции timeSetEvent и timeKillEvent
Тестирование мультимедийного таймера
Глава 11. Специальные приложения
Анимация
Приложение со стандартным таймером
Двойная буферизация
Рисование в реальном времени
Требования к приемнику информации от метеорадиолокатора
Разработка модели программного имитатора
Приложение 1. Интегрированная среда Visual C++ 6.0
Запуск IDE. Типы приложений
Создание нового проекта
Добавление к проекту файлов с исходным кодом
Многофайловые проекты
Компиляция, компоновка и выполнение проекта
Конфигурация проекта
Как закончить работу над проектом
Как открыть проект,
над которым вы ранее работали
Встроенная справочная система
Работа с отладчиком
Некоторые полезные инструменты
Приложение 2. Интегрированная среда Visual Studio.NET
Создание нового проекта
Добавление к проекту нового файла
Компиляция, сборка и выполнение
Работа с редакторами ресурсов
Приложение 3. Работа с утилитой Spy++
Список литературы
Алфавитный указатель