
- •Содержание
- •Часть 1. Общие сведения о технологии программирования 5
- •Часть 2. Windows программирование 24
- •Введение
- •Часть 1. Общие сведения о технологии программирования
- •1. Задачи технологии программирования
- •1.1. Базовые определения
- •1.2. Невозможность доказательства отсутствия программных ошибок
- •1.3. Надежность программного средства
- •1.4. Технология программирования как способ создания надежных программных средств
- •1.5. Этапы развития технологии программирования
- •1.6. Технология программирования и информатизация общества
- •2. Общие принципы разработки программных средств
- •2.1. Специфика разработки программных средств
- •2.2. Основные подходы при создании пс
- •2.3. Жизненный цикл программного средства
- •2.4. Понятие качества программного средства
- •2.5. Обеспечение надежности – основной критерий разработки программных средств
- •2.5.1. Методы борьбы со сложностью
- •2.5.2. Обеспечение точности перевода
- •2.5.3. Преодоление барьера между пользователем и разработчиком
- •2.5.4. Контроль принимаемых решений
- •3. Архитектура программного средства
- •3.1. Понятие архитектуры программного средства
- •3.2. Основные классы архитектур программных средств
- •3.3. Архитектурные функции
- •4. Тестирование и отладка программного средства
- •4.1. Основные понятия
- •4.2. Принципы и виды отладки программного средства
- •4.3. Заповеди отладки программного средства
- •4.4. Автономная отладка программного средства
- •4.5. Комплексная отладка программного средства.
- •Часть 2. Windows программирование
- •5. Основные характеристики Windows платформ
- •5.1. Краткая история Windows
- •5.2. Отличия и общие свойства Windows платформ
- •5.2.1. Общие свойства Windows платформ
- •5.2.2. Отличия Win32 платформ
- •5.2.3. Окна и сообщения
- •5.2.4. Приложения, потоки и окна
- •5.2.5. Классы окон
- •5.2.6. Венгерская нотация
- •5.2.7. Типы сообщений
- •5.2.8. Сообщения и многозадачность
- •5.2.9. Очереди сообщений
- •5.2.10. Процессы и потоки
- •5.2.11. Потоки и сообщения
- •5.2.12. Оконная функция – функция обратного вызова
- •5.2.13. Синхронные и асинхронные сообщения
- •5.2.14. Функции Windows
- •5.2.15. Другие api
- •6. Структура Windows приложений
- •6.1. Файлы заголовков
- •6.2. Глабальные переменные
- •6.3. Точка входа в приложение
- •6.4. Необходимые переменные
- •6.5. Регистрация класса окна
- •6.6. Создание главного окна
- •6.7. Отображение главного окна
- •6.8. Цикл обработки сообщений
- •6.9. Функция окна
- •7. Обработка сообщений в оконной функции
- •7.1. Создание окна wm_create
- •7.2. Определение размера окна wm_size
- •7.3. Отображение содержимого окна wm_paint
- •7.3.1. Случаи генерации сообщения wm_paint
- •7.3.2. Особенность сообщения wm_paint
- •7.3.3. Правила обработки wm_paint
- •7.3.4. Отрисовка вне wm_paint
- •7.3.5. Определение возможностей контекста устройства
- •7.3.6. Системные метрики
- •7.4. Определение расположения окна wm_move
- •7.5. Использование оконных полос прокрутки
- •7.5.1. Диапазон и положение полос прокрутки
- •7.5.2. Сообщения полос прокрутки
- •7.6. Клавиатурный ввод
- •7.6.1. Фокус ввода и активное окно
- •7.6.2. Генерация клавиатурных сообщений
- •7.6.3. Аппаратные сообщения
- •7.6.3.1. Системные аппаратные сообщения
- •7.6.3.2. Несистемные аппаратные сообщения
- •7.6.3.3. Битовые поля параметра lParam
- •7.6.3.4. Виртуальные коды клавиш
- •7.6.4. Символьные сообщения
- •7.6.5. Обработка сообщения wm_char
- •7.6.6. Определение состояния управляющих клавиш
- •7.6.7. Наборы символов
- •7.7. Системный таймер
- •7.7.1. Использование таймера. Первый способ
- •7.7.2. Использование таймера. Второй способ
- •7.8. Удаление окна, сообщение wm_destroy
- •8. Ресурсы приложения и их использование
- •8.1. Меню приложения
- •8.1.1. Виды меню
- •8.1.2. Возможные состояния пунктов меню
- •8.1.3. Сообщения от пунктов меню
- •8.1.4. Создание главного меню приложения
- •8.1.5. Функции для работы с меню
- •8.2. Стандартные элементы управления
- •8.2.1. Создание стандартных элементов управления
- •8.2.2. Разрушение элементов управления
- •8.2.3. Функции для работы с элементами управления
- •8.2.4. Сообщения дочерних окон
- •8.2.5. Сообщения родительского окна дочерним окнам
- •8.2.6. Расширенное управление дочерними окнами
- •8.2.7. Оконные процедуры элементов управления
- •8.2.8. Элемент управления кнопка
- •8.2.8.1. Стили кнопок
- •8.2.8.2. Сообщения от кнопок, получаемые родительским окном
- •8.2.8.3. Сообщения от родительского окна к кнопке
- •8.2.8.4. Кнопки-переключатели
- •8.2.8.5. Сообщение от переключателей
- •8.2.8.6. Сообщение от родительского окна к переключателям
- •8.2.9. Структура drawitemstruct
- •8.2.10. Стандартный элемент управления окно ввода
- •8.2.10.1. Стили окна редактирования
- •8.2.10.2. Сообщения от редактора к родительскому окну
- •8.2.10.3. Сообщения от родительского окна к редактору
- •8.2.11. Стандартный элемент управления статический текст
- •8.2.11.1. Стили элемент управления static
- •8.2.11.2. Сообщения от статического элемента управления
- •8.2.11.3. Сообщения от родительского окна к static
- •8.2.12. Стандартный элемент управления список
- •8.2.12.1. Стили элемента управления список
- •8.2.12.2. Сообщения от списка к родительскому окну
- •8.2.12.3. Сообщения от родительского окна к списку
- •8.2.13. Стандартный элемент управления список с вводом
- •8.2.13.1. Стили элемента управления combobox
- •8.2.13.2. Сообщения от combobox к родительскому окну
- •8.2.13.3. Сообщения от родительского окна к combobox
- •9. Создание и использование диалоговых окон
- •9.1. Этапы создания диалога
- •9.1.1. Создание шаблона диалога
- •9.1.2. Функция диалога
- •9.1.2.1. Сходства между диалоговой функцией и оконной процедурой
- •9.1.2.2. Различия между диалоговой функцией и оконной процедурой
- •9.2. Типы диалоговых панелей
- •9.3. Создание модального диалога
- •9.4. Закрытие модального диалога
- •9.5. Окна сообщений.
- •9.6. Немодальные диалоги
- •9.7. Диалоговые окна общего пользования
- •10. Управление файлами
- •10.1. Доступ к файловой системе
- •10.2. Потоковый ввод/вывод
- •10.3. Функции ядра Windows для работы с файлами
- •10.4. Специализированные функции для работы с файлами
- •11. Печать документов
- •11.1. Последовательность печати документа
- •11.2. Контекст устройства принтера
- •11.3. Диалог отмены печати
- •11.4. Запуск процесса печати
- •11.5. Печать страницы документа
- •11.6. Завершение печати документа
- •12. Процессы и потоки
- •12.1. Диспетчеризация потоков
- •12.2. Проблемы многопоточной технологии
- •12.3. Создание рабочего потока
- •12.4. Организация взаимодействия потоков
- •12.4.1. Рабочий поток – процесс
- •12.4.2. Процесс – рабочий поток
- •12.5. Общая схема взаимодействия потоков
- •13. Приложение "Тестер файлов"
- •13.1. Функция WinMain()
- •13.2. Функция главного окна
- •13.3. Вспомогательные функции
- •13.4. Функция рабочего потока
- •Литература к первой части
- •Литература ко второй части
Часть 2. Windows программирование
5. Основные характеристики Windows платформ
В этом разделе даются основные понятия о семействе операционных систем Windows, а также детально рассматривается механизм взаимодействия приложений Windows с ядром системы. Раздел является ключевым для понимания последующего материала.
Операционные системы Windows – многозадачные, многопользовательские операционные системы, обеспечивающие полное использование ресурсов PC, при этом достигая абсолютной независимости исполняемых приложений (программ) от особенностей аппаратуры компьютера. Операционные системы Windows имеют единый графический интерфейс, поддерживают обмен данными между приложениями (Clipboard, OLE, DDE), включают сетевое обеспечение и многое другое. Можно сказать, что по мере проникновения на рынок персональных компьютеров, системы Windows почти полностью вытеснили всех имеющихся конкурентов и стали, фактически, эталоном операционной системы для PC.
5.1. Краткая история Windows
О работе над Windows корпорация Microsoft заявила в 1983 году и реализовала ее двумя годами позже, в виде Windows 1.0. В течение двух последующих лет, Windows версии 1.1 претерпела несколько модернизаций, необходимых для удовлетворения требований международного рынка.
Windows 2.0 была создана в 1987 году. Эта версия содержала несколько изменений пользовательского интерфейса. Наиболее важное из этих изменений касалось использования перекрывающихся окон, вместо окон, расположенных рядом, что было характерно для Windows 1.х. Windows 2.0 содержала также улучшенный интерфейс клавиатуры и манипулятора мышь, а также, отчасти, окон меню и диалога.
В то время для Windows требовались только процессоры Intel 8086 или 8088, работающие в реальном режиме, при этом доступ осуществлялся к 1 мегабайту оперативной памяти. Windows-386, созданная вскоре после Windows 2.0, использовала виртуальный режим процессора Intel 80386 для запуска нескольких одновременно работающих программ MS-DOS в окнах. Для симметрии Windows версии 2.1 назвали Windows-286.
Windows 3.0 появилась в марте 1992 года. Здесь были объединены ранние версии Windows-286 и Windows-386. Главным изменением в Windows 3.0 была поддержка защищенного режима процессоров Intel 80286, 80386 и 80486. Это позволило Windows и ее приложениям получить доступ к 16 мегабайтам оперативной памяти. “Оболочка” программ Windows для запуска программ и поддержки файлов была полностью переделана. Windows 3.0 – это первая версия Windows, которая стала “родной” для множества пользовательских машин в домах и офисах.
В апреле 1992 года появилась Windows 3.1. Сюда были включены такие важные свойства, как технология TrueTupe для шрифтов, что дало возможность масштабировать шрифты для Windows; MultiMedia – звук и музыка; OLE и диалоговые окна общего пользования. Кроме этого, Windows 3.1 работала только в защищенном режиме и требовала наличия процессора 80286 или 80386 и, по крайней мере, одного мегабайта оперативной памяти.
Любая история Windows была бы неполной без упоминания об операционной системе OS/2 – альтернативной для DOS и Windows, которая на первом этапе развивалась корпорацией Microsoft в сотрудничестве с фирмой IBM. Операционная система OS/2 версии 1.0 (только для символьного режима) работала на процессорах Intel 80286 и более поздних и появилась в конце 1987 года. Графическая оболочка Presentation Manager была реализована в OS/2 версии 1.1 в 1988 году. Presentation Manager, как изначально предполагалось, должна была стать основной стратегией развития операционных систем. Хотя у OS/2 все еще имеется немало горячих поклонников, ее популярность не идет ни в какое сравнение с популярностью Windows.
Windows NT, появившаяся в 1993 году, стала первой версией Windows, поддерживающей 32-х разрядную модель программирования для процессоров Intel 80386, 80486 и Pentium. Windows NT имеет сплошное плоское (flat) 32-х разрядное адресное пространство и 32-х разрядные целые. Кроме этого, система Windows NT является переносимой на различные компьютерные платформы.
Windows 95 (или Chicago, или Windows 4.0) появилась в августе 1995 года. Также как Windows NT, Windows 95 поддерживает 32-х разрядную модель программирования. Хотя у Windows 95 и нет некоторых возможностей Windows NT, таких как, например, высокая степень безопасности, тем не менее она способна работать на компьютерах, имеющих всего 4 мегабайта оперативной памяти.
В Windows 98 (Windows 4.1) внесено ряд улучшений по сравнению с Windows 95, например, касающихся поддержки жестких дисков большой емкости, а также изменен пользовательский интерфейс, который теперь базируется на Internet Explorer, который стал компонентом операционной системы.
Windows 2000 (Windows NT 5.0) вышла в конце 1999 года и является последней, к настоящему времени, представительницей семейства операционных систем Windows. По заявлениям фирмы Microsoft, эта система вобрала в себя все лучшее, что было создано до нее, и должна заменить Windows NT. Однако колоссальные затраты ресурсов PC и незавершенность разработки пока препятствуют ее широкому распространению.