На сайте изложены основополагающие принципы программирования для Windows на языке С/С++ с применением Win32 API. Практика показывает, что те программисты, которые начинают осваивать программирование для Windows сразу на уровне MFC или Windows Forms, не имея никакого опыта работы с Win32 API, сталкиваются с серьезными проблемами, как только дело доходит до создания реальных приложений. Напротив, опыт программирования с Win32 API позволяет осваивать более высокие технологии гораздо гармоничней и продуктивней. Владение базовыми знаниями Win32 API является надежной основой для вашего профессионального роста в сфере программирования.

«Hello, World!», или Первые шаги к пониманию основных концепций Windows

Базовые концепции
Графический интерфейс пользователя
Многозадачность
Управление памятью
Независимость от аппаратных средств
Вызовы функций и DLL
Объектно-ориентированное программирование
Архитектура, управляемая событиями
Оконная процедура
Оконные классы
Цикл обработки сообщений
Наипростейшая программа для Windows
Программа «Hello, World!» — первый вариант
Файл исходного текста программы
Регистрация класса окна
Создание окна
Отображение окна на экране
Обработка сообщений
Оконная процедура
Обработка сообщения WM_PAINT
Атрибуты цвета и фона для выводимого текста
Обработка сообщений WM_CLOSE и WM_DESTROY
Программа «Hello, World!» — второй вариант
Модификация характеристик окна
Синхронные и асинхронные сообщения
Функция SendMessage
Функция SendNotifyMessage
Функция PostMessage
Использование глобальных или статических переменных
Получение дескриптора экземпляра приложения
Предотвращение зависания приложения в случае медленной обработки отдельных событий
Использование утилиты Spy++

GDI — графический интерфейс устройства. Рисование линий, фигур, текста

Графический интерфейс устройства
Контекст устройства
Типы контекстов устройства
Регионы Windows. Отсечение
Контекст дисплея
Первый метод получения дескриптора контекста устройства
Подтипы контекста дисплея
Общий контекст дисплея
Частный контекст дисплея
Использование сообщения WM_PAINT
Контекст принтера
Контекст в памяти (совместимый контекст)
Метафайловый контекст
Информационный контекст
Экранные, оконные и клиентские координаты
Типы координатных систем
Физическая система координат
Система координат устройства
Страничная система координат и режимы отображения
Мировая система координат
Аффинные преобразования
Функции мировых преобразований в Win32 API (Windows NT/2000)
Управление цветом. Вывод пиксела
Цветовое пространство HLS
Определение цвета при работе с палитрой
Вывод пикселов
Режим рисования. Бинарные растровые операции
Режим смешивания фона и цвет фона графического элемента
Общие операции с графическими объектами
Линии и кривые
Рисование отрезков
Текущая позиция пера
Рисование прямой линии
Дуги
Кривые Безье
Перья
Простые перья
Косметические перья
Геометрические перья
Кисти
Пользовательские кисти
Сплошные кисти
Растровые кисти
Замкнутые фигуры
Прямоугольники
InvertRect
DrawFocusRect
Эллипсы
Многоугольники
Регионы и отсечение
Отсечение
Отсечение для клиентской области окна
Наборы символов и кодировки
Unicode
Шрифты
Типы шрифтов
Метрики шрифтов
Логические шрифты
Стандартные шрифты
Создание логических шрифтов
Подстановка шрифта
Получение информации о выбранном физическом шрифте
Вывод текста
Простой вывод текста
Вывод текста с табуляцией
Межсимвольные интервалы
Выравнивание по ширине (выключка)
Абзацное форматирование в прямоугольнике
Нетривиальный вывод текста
Полосы прокрутки и вывод текста
Параметры полосы прокрутки
Сообщения полос прокрутки

GDI. Палитры, растры, метафайлы

Просмотрщик текстовых файлов
Вывод временной диаграммы напряжения переменного электрического тока
Палитры
Основные принципы управления палитрами
Системная палитра
Логическая палитра
Полутоновая палитра
Использование специализированной палитры
Растры
Аппаратно-независимые растры
Цветовая таблица
Массив пикселов
Упакованный аппаратно-независимый растр
Аппаратно-зависимые растры
Создание DDB-растра из упакованного DIB
Загрузка DDB-растра из ресурсов приложения
Отображение DDB-pacтpa
Функции блиттинга
Создание DIB-секции
Прямой доступ к пикселам со стороны приложения
Отображение DIB-секции
Тернарные растровые операции
Операции, зависящие только от источника
Операции, не зависящие от шаблона кисти
Метафайлы
Создание метафайла

Средства ввода

Средства ввода
Клавиатура
Фокус ввода
Клавиши и символы
Работа с кареткой
Примитивный текстовый редактор
Мышь
Терминология, связанная с мышью
Сообщения мыши
Обработка двойного щелчка
Обработка сообщений от колеса мыши
Рисуем мышью
Эластичные прямоугольники
Улучшенное приложение для просмотра текстовых файлов

Ресурсы Windows-приложения

Ресурсы Windows-приложения
Редакторы ресурсов
Пиктограммы
Импорт существующей пиктограммы
Просмотр ресурса с вызовом соответствующего редактора
Использование ресурса в приложении
Курсоры
Растровые образы
Ресурсы, определяемые программистом
Доступ к данным в ресурсе
Воспроизведение звуковых файлов
Таблицы строк

Меню и быстрые клавиши

Меню и быстрые клавиши
Организация и виды меню
Типы пунктов меню
Системное меню
Клавиатурный интерфейс меню
Статус пунктов меню
Отметка пунктов меню
Пункт меню, применяемый по умолчанию
Определение меню в виде ресурса
Вызов редактора меню
Уровни меню
Процедура определения пункта для меню i-го уровня
Процедура определения меню нулевого уровня
Добавление меню к окну приложения
Внесение изменений в меню
Сообщения меню
Приложение MenuDemo1
Работа с контекстным меню
Определение шаблона контекстного меню
Загрузка меню
Вызов меню
Приложение MenuDemo2
Быстрые клавиши
Модификация определения ресурса меню
Таблица быстрых клавиш

Диалоговые окна

Диалоговые окна
Типы диалоговых окон
Создание и обработка диалогового окна
Шаблон диалогового окна
Шаблонная система единиц
Модальный диалог
Вызов и использование редактора диалоговых окон
Добавление элемента управления Рисунок
Выравнивание элементов управления на форме диалога
Диалоговая процедура
Вызов диалога
Текст (атрибут Caption)
Используемый шрифт
Цветовые атрибуты
Использование других элементов управления
Кнопки
Кнопка Owner draw
Пример использования кнопки Owner draw
Флажки
Переключатели
Групповая рамка
Пример использования групповой рамки, флажков и переключателей
Модификация меню в приложении DlgDemo3
Разработка шаблона диалога
Клавиатурный интерфейс и порядок обхода элементов управления
Окно редактирования
Функции чтения/записи текста для элементов управления
Список
Пример использования элементов управления Edit box и List box
Комбинированный список
Обмен сообщениями с комбинированным списком
Пример использования элемента управления Combo box
Немодальный диалог
Различия между модальными и немодальными окнами диалога
Пример использования немодального окна диалога
Окно сообщений
Диалоговые окна общего пользования
Элементы управления общего пользования
Основы применения
Создание элементов управления общего пользования
Стили элементов управления общего пользования
Обмен сообщениями
Панель инструментов
Начало разработки приложения ToolBar
Определение ресурса растрового образа панели инструментов
Изменение размеров панели инструментов
Поддержка элемента управления «подсказка»
Панель инструментов с дополнительными текстовыми метками
Размещение на панели инструментов других элементов управления
Окно подсказки
Замена класса KWnd на класс KWndEx
Разделение строки состояния на поля
Вывод текстового сообщения
Размеры и позиция строки состояния
Уменьшение видимой части клиентской области главного окна
Поддержка просмотра меню
Процедура однозначной идентификации пунктов-подменю
Приложение StatusBar
Индикатор процесса
Регулятор
Параметры и состояние регулятора
Действия пользователя и уведомляющие сообщения
Приложение TrackBar
Счетчик и поле с прокруткой
Создание счетчика
Сообщения от поля с прокруткой

Многозадачность

Объекты ядра
Процессы и потоки
Планирование потоков
Классы приоритетов процесса и приоритеты потоков
Управление процессами
Завершение процесса
Запуск обособленных дочерних процессов
Функция Sleep
События
Виртуальная память. Адресное пространство процесса
Модель «клиент-сервер»
Использование проекции файла для реализации разделяемой памяти
Файлы данных, проецируемые в память
Архитектура интерфейсов (API) управления памятью
Физическая память и страничный файл
Обмен данными между процессами
Wait-функции
Побочные эффекты успешного ожидания
Критические секции
Атомарный доступ и семейство Interlocked-функций
Синхронизация
Взаимодействие потоков через глобальную переменную

Таймеры и время

Время Windows
Использование команды RDTSC
Стандартный таймер
Анимация
Требования к приемнику информации от метеорадиолокатора
Интегрированная среда Visual C++ 6.0
Создание нового проекта
Многофайловые проекты
Установка точки прерывания
Работа с отладчиком
Как открыть проект, над которым вы ранее работали
Компиляция, компоновка и выполнение проекта
Конфигурация проекта
Встроенная справочная система
Добавление существующего файла
Запуск IDE. Типы приложений
Первая версия модели программного имитатора
Разработка модели программного имитатора
Рисование в реальном времени
Приложение со стандартным таймером
Функции timeSetEvent и timeKillEvent
Мультимедийный таймер
Программирование задержек в исполнении кода
Системное время
Таймеры и время