Благодарности
Введение
Жила-была книга о Windows API...
О чем говорится в книге: старое и новое
Как работать с книгой (пожалуйста, прочтите!)
Частые вопросы
Как насчет Visual Basic 6?
Я застрял, ничего не получается, мне нужна помощь
От издательства

Глава 1. DLL и функции API
Переход от DOS к Windows
Библиотеки динамической компоновки (DLL)
Статическая компоновка
Динамическая компоновка
Visual Basic и DLL
Интерфейс прикладных программ (API)
Windows API и Visual Basic
Разновидности Windows
Основные DLL системы Windows
Вселенная библиотек расширения
Разновидности Visual Basic

Глава 2. Окна и манипуляторы
Visual Basic и Windows
Обзор Visual Basic
Обзор Windows
Внутреннее строение Windows
Что такое окно?
У окон есть классы
Стили окон
Другие атрибуты окна
Функция окна
Суперклассирование и элементы Visual Basic
Снова о взаимосвязи Visual Basic/Windows
Графический вывод в Windows
Интерфейс графических устройств
Контексты устройств
Совместимые контексты устройств
Манипуляторы объектов
Использование манипуляторов
Следующий шаг

Глава 3. Интерфейс Visual Basic/Windows
Команда Declare
Unicode, ANSI и псевдонимы
Работа с ANSI и Unicode в Visual Basic
Вызов правильной функции
Результаты вызовов функций API
Параметры DLL
Списки аргументов
Типы и обозначения параметров DLL
Знакомство с типами параметров
8-разрядные числовые параметры
16-разрядные числовые параметры
32-разрядные числовые параметры
Денежные параметры
Вещественные параметры
Параметры типа Variant
Манипуляторы (объекты Windows)
Объекты (Visual Basic и OLE)
Флаги и битовые поля
Строки
Указатели на числовые значения
Указатели на структуры
Указатели на массивы
Указатели на функции
Многотипные параметры
Что происходит при вызове функций API/DLL
Кадры стека
Возвращаемые значения
За рамками теории

Глава 4. Практическое программирование API
Приемы программирования API
Объявления, безопасные по отношению к типам
Отправка сообщений
Модульное программирование
Файлы объявлений и инструментарий API
Преобразование документации API в Visual
Basic (часть 1 -- функции)
Пример: приватные файлы инициализации
Программирование для 16- и 32-разрядных
платформ (только для VB 4)
Условная компиляция
Программирование с учетом платформы
Пример: приватные файлы инициализации
Когда условная компиляция недоступна
Перенос существующего 16-разрядного кода
Изменившиеся функции
Исключенные функции
Перенос сообщений
Проблемы переноса, связанные с изменением
архитектуры Windows
Преобразование документации API в Visual
Basic (часть 2 -- файлы и структуры)
Пример: программа просмотра шрифтов TrueType
Примечания по поводу переноса
Отладка программ, использующих API
Десять заповедей безопасного
программирования API (новый вариант)
В начале большого пути

Глава 5. Функции управления и получения
информации об окнах
Функции для работы с прямоугольниками и точками
Структура RECT
Структура POINTAPI
Функции для работы с прямоугольниками и
пример RectPlay
Функции управления и получения информации об окнах
Иерархия окон и функции идентификации
Функции для определения позиции и размеров окна
Функции получения информации об окнах
Фокус, активность и состояния ввода
Пример: Statevw
Прочие функции окон
Пример: WinView
Справка по стилям окон
Стили диалоговых окон
Справка по функциям

Глава 6. Аппаратные и системные функции
Функции для работы с мышью, курсором и кареткой
Отсечение курсора
Позиция курсора
Другие функции для работы с мышью и курсором
Функции для работы с кареткой
Функции для работы с клавиатурой и другие функции
ввода
Снова о кодировках
Скан-коды и виртуальные клавиши
Локальный контекст
Функции управления вводом
Функции для работы со временем
Функции получения системной информации и
управляющие функции
Пример: Environ.vbp -- класс для работы с
переменными окружения
SysInfo -- программа просмотра системной информации
Использование программы SysInfo
Описание проекта
Имитация нажатий клавиш и событий мыши
Все вместе: пример SimKeys
Справка по функциям

Глава 7. Контексты устройств
Знакомство с контекстами устройств
Философия контекстов устройств
Отсечение
Преобразования координат
Снова о контекстах устройств
Работа с контекстами устройств
Получение контекста устройства
Использование контекстов устройств в Visual Basic
Информационные функции контекстов устройств
Пример: DevView -- программа просмотра
информации об устройстве
Масштаб и системы координат
Логические и физические координаты
Режимы отображения
Логические окна и области просмотра --
габариты и начала координат
Мировые преобразования
Системы координат Windows и Visual Basic
Различия между платформами
Пример: Viewport
Описание проекта и формы
Отсечение, регионы и другие функции
контекстов устройств
Регионы
Отсечение
Прочие функции контекстов устройств
Проблемы быстродействия
Пример: Region
Справка по функциям

Глава 8. Графические функции
Общие сведения о графическом выводе
Графические объекты GDI
Создание графических объектов GDI
Правила выбора и удаления объектов GDI
Перья
Кисти
Объекты GDI и Visual Basic
Графические атрибуты
Режим растровых операций
Режим заполнения фона
Текущая позиция
Графические функции
Траектории
Проблемы платформы
Все вместе: учимся на примерах
Пример: Path.vbp
Пример: ExtPen.vbp
Пример: Bezier.vbp
Метафайлы
Метафайлы и системы координат
Все вместе II: дополнительные примеры
Пример: QuikDraw -- простое графическое приложение
Использование QuikDraw
Описание проекта
Пример: Analyze -- внутреннее устройство метафайла
Справка по функциям

Глава 9. Растры, значки и растровые операции
Растры
Отображение пикселов
Цветовые плоскости и палитры устройств
Аппаратно-зависимые растры
Преобразования цветов
Использование растров в Visual Basic
Аппаратно-независимые растры
Динамические структуры
Структуры DIB
DIB-секции
Значки и курсоры
Растровые операции
Использование растровых операций
Примеры
StockBMs -- просмотр встроенных растров и значков
ROPTest -- эксперименты с растровыми операциями
Puzzle -- графическая головоломка
DIBSect -- демонстрация работы с DIB-секциями
Справка по функциям

Глава 10. Работа с меню
Система меню изнутри
Система меню в Windows
Стандартные и расширенные меню
Использование функций меню API в VB
Создание нестандартных маркеров
Применение растров для настройки меню
Перемещаемые всплывающие меню
Создание пула элементов меню VB
Меню, системные меню и субклассирование
Получение информации о структуре меню VB
Примеры
MenuLook -- просмотр структуры меню
SysMenu -- системные и контекстные меню
Справка по функциям

Глава 11. Текст и шрифты
Работа со шрифтами
Знакомство со шрифтами
Атрибуты шрифтов
Моноширинные и пропорциональные шрифты
Метрики шрифтов
Семейства шрифтов
Кодировка
Диакритические символы, лигатуры и кашида
Создание логических шрифтов
Подстановка шрифтов в GDI
Функции получения информации о шрифтах
Добавление и удаление шрифтов
Параметры шрифтов в функциях и структурах данных
Поля структур TEXTMETRIC и NEWTEXTMETRIC
Вывод текста
Процесс вывода текста
Габариты и выравнивание текста
Примеры
Приложение FontView
Приложение TextDemo
Приложение DrawText
Приложение EnmFntX
Справка по функциям

Глава 12. Печать
Печать в Windows
Контекст устройства принтера
Подсистема печати Win32
Настройка принтера
Последовательность действий при печати
Печать в Visual Basic
Проблемы совместимости
Конфигурация принтера и Visual Basic
Проблемы с драйверами
Настройка принтера и структура DEVMODE
Служебные команды
Управление спулером
Функции и структуры спулера
Примеры
PicPrint -- печать растрового изображения и
конфигурации принтера
DocJob.vbp -- прямой вывод на принтер
Spooler.vbp -- другой подход к использованию функций API
Справка по функциям

Глава 13. Операции с файлами
Какой тип доступа к файлу следует использовать?
Приватные файлы инициализации
Системный реестр
Собственные файловые форматы
Базы данных
Структурированные хранилища OLE
Файлы инициализации
Системный реестр
Архитектура реестра
Операции с файлами и каталогами
Файловые функции Win32
Асинхронные файловые операции
Операции со сжатыми файлами
Файловые отображения (файл или память?)
Для чего нужны отображаемые файлы?
Пометка версии
Пометка версии и Visual Basic
Структуры данных ресурсов версии
Примеры
Описание файлов
ckServe/ckClient: взаимодействие приложений
Disk.vbp -- определение свободного места на диске
Справка по функциям

Глава 14. Процессы и нити
Процессы, нити и экземпляры
Многозадачность
Задачи, процессы и синхронизация
Нити
Что произошло с экземплярами?
Системные объекты и объекты синхронизации
Работа с системными объектами
Мутексы, семафоры, события и ждущие таймеры
Синхронизация и Visual Basic
Запуск приложений
Объекты процессов и нитей
Получение информации о закрытии других приложений
Межпроцессные взаимодействия
Каналы
Почтовые слоты
Примеры
ckServe/ckClient: снова о взаимодействии приложений
Launch.vbp: запуск приложений
dwWatch.vbp: синхронизация с применением механизма
косвенного вызова OLE
PipeSrc.vbp/PipeDest.vbp: использование анонимных каналов
PipeClnt.vbp/PipeSrv.vbp: использование именованных
каналов
Приложение PipeClnt.vbp
Справка по функциям

Глава 15. Память, строки, структуры и ресурсы
Память и строки
Создание буферов в Visual Basic
Создание буферов средствами Windows
Использование глобальной памяти в Visual Basic
Строковые функции
Интерфейс Visual Basic/Windows для экспертов
Нетривиальные приемы работы со структурами
Фиксированные строки в структурах
Динамические строки в структурах
Ресурсы
Ресурсы и приложения Windows
Ресурсы и Visual Basic
Ресурсные функции API
Атомы и свойства
Атомы
Функции свойств
Справка по функциям

Глава 16. Стандартные сообщения Windows
Обработка сообщений
Сообщения Windows и события Visual Basic
Сообщения, выполняющие операции
Структура сообщений
Отправка сообщений
Параметры сообщений
Сообщения, возвращающие значения
Сообщение WM_COMMAND
Сообщения, используемые в Visual Basic
Visual Basic и субклассирование
Справка по функциям
Справка по сообщениям

Глава 17. Сообщения текстовых полей
Текстовое поле
Возможность отмены
Форматирование текста
Выделение и вывод текста
Пример: TextMsgs -- работа с сообщениями
текстовых полей
Использование TextMsgs
Листинги TxtMsgs
Оповещающие сообщения (текстовые поля)
Сообщения текстовых полей

Глава 18. Сообщения списков, комбинированных
полей и кнопок
Список
Выделение и операции с данными
Вывод данных
Комбинированное поле
Кнопки
Оповещающие сообщения (списки, комбинированные
поля, кнопки)
Сообщения комбинированных полей
Сообщения кнопок

Глава 19. Вызов функций API в VB: варианты
архитектурных решений
Применение Windows API для повышения быстродействия
Эталонный тест как разновидность черной магии
Пример сравнительного хронометража: графические
операции средствами Visual Basic и API
Windows API: расширение возможностей и надежность
Встроенный код, функции и библиотеки классов
Архитектурные решения
Сравнения
Факторы
На ошибках учатся

Глава 20. Построение библиотеки классов API
Архитектура библиотеки классов
Архитектурные критерии библиотеки API Class Library
Выбор классов
Реализация библиотеки классов
Имена и параметры функций
Инкапсуляция структур
Работа с константами
Обработка ошибок
Все вместе: класс dwDeviceContext
Использование библиотеки классов
Использование класса dwRect
Использование класса dwWindow
Использование dwSystem
Использование класса dwDeviceContext

Глава 21. Последовательные коммуникации
Знакомство с последовательными коммуникациями
Формат последовательных данных
Стандарт RS-232
Сигналы данных
Процесс соединения
Управление потоком данных
Последовательный коммуникационный драйвер Windows
Архитектура последовательного драйвера
Использование последовательного драйвера
События последовательного драйвера
Последовательный драйвер и параллельные порты
Конфигурация последовательного порта и блок
управления устройством
Получение информации о состоянии последовательного
порта
Функции API для работы с последовательным драйвером
Пример: простейшая терминальная программа CommDemo
Справка по функциям

Глава 22. Сетевые функции
Windows и сети
Обобщенные сети
Функции и классы WNet
Архитектура классов
Обработка сетевых ошибок
Перечисление сетевых ресурсов
Класс dwNetResource
Пример: Treenet.vbp -- утилита просмотра сети
Справка по функциям

Приложение А. Использование функций косвенного
вызова
APIGID32.DLL, DWCBK32D.OCX и DWSBC32D.OCX
DWCBK32D.OCX -- поддержка механизма косвенного
вызова
Как работают функции косвенного вызова?
Использование DWCBK32D.OCX
События и типы косвенного вызова
DWSBC32D.OCX -- поддержка субклассирования
Использование DWSBC32D.OCX
APIGID32.DLL

Приложение Б. Структуры данных Windows

Приложение В. Форматы файлов Windows
Формат растровых файлов
Формат файла значка
Формат файла курсора
Формат метафайла (расширение .WMF)

Приложение Г. Конвенции вызова функций DLL
из Visual Basic: технический обзор
Конвенции вызова
Способы передачи данных по типу
Числовые типы данных
Денежный тип данных
Строковый тип данных
Формы, элементы и объекты
Пользовательские типы
Массивы
Тип Variant
Сводка правил передачи параметров
Как избежать исключений

Алфавитный указатель