Первые десять томов "Библиотеки системного программиста" были посвящены в основном аппаратуре компьютера, операционной системе MS-DOS и сетевым средствам, таким, как операционная система Novell NetWare. Теперь настало время приступить к изучению операционной системы Microsoft Windows - самой популярной среды для персональных компьютеров середины 90-х годов.
Операционная система Microsoft Windows по своим возможностям не только намного превосходит MS-DOS, но и даже просто не сравнима с MS-DOS. Удобный, хорошо продуманный, а главное, стандартизованный для всех программ Windows пользовательский интерфейс интуитивно ясен и удобен для изучения. Поэтому после появления Microsoft Windows версии 3.0 всего за несколько лет произошла настоящая революция прикладного программного обеспечения персональных компьютеров - практически все основные программные продукты были переделаны для работы в среде Windows. При этом они приобрели свойства и возможности, недостижимые ранее из-за ограничений, накладываемых операционной системой MS-DOS.
Но к сожалению, программирование для Windows - гораздо более трудоемкое и кропотливое занятие, чем программирование для MS-DOS. Это связано, в первую очередь, с обилием новых возможностей. Для создания пользовательского интерфейса и выполнения других задач вам предлагается набор из более чем тысячи функций! Если же вы собираетесь работать с мультимедиа или другими дополнительными подсистемами Windows, набор функций еще больше расширяется.
На помощь программисту приходит объектно-ориентированный подход и наборы классов, поставляемых в комплекте со средствами разработки программ или отдельно. Есть автоматизированные генераторы программ, почти или полностью исключающие программирование на каком бы то ни было процедурном языке. При этом сложность задачи сокращается в десятки и сотни раз, правда, иногда ценой потери эффективности и производительности программы.
Впрочем, вы всегда можете комбинировать разные подходы при разработке своего проекта и использовать в одном проекте средства разного уровня - от библиотек классов и генераторов программ до модулей, составленных на языке ассемблера. При этом может быть достигнут компромисс между сроками разработки и отладки программы, с одной стороны, и рабочими характеристиками программы, с другой стороны.
Наш подход в изложении материала заключается в том, что вначале мы рассмотрим принципы работы операционной системы Windows и научимся использовать программный интерфейс (API) Windows. При этом все программы, которые мы приводим в качестве примеров, будут составлены на языке программирования C++.
После изучения программного интерфейса Windows мы займемся библиотекой классов Object Windows Library, которая поставляется в комплекте с трансляторами Borland C++. Эта библиотека упрощает процесс создания сложных программ, однако для ее эффективного использования вы уже должны владеть всеми основными понятиями Windows.
Не останется без внимания новый 32-разрядный программный интерфейс Win32s, который используется в Windows версии 3.1. В следующую версию Windows, предположительно называемую Windows 4.0, будет встроен интерфейс Win32c - надмножество интерфейса Win32s. Интерфейсы Win32s и Win32c являются подмножествами интерфейса Win32 другой операционной системы - Windows NT.
И конечно, мы обязательно рассмотрим новое направление в использовании персональных компьютеров - мультимедиа. Вы, в частности, научитесь составлять программы, умеющие работать со звуком и проигрывать звуковые компакт-диски.
Разумеется, мы не можем изложить весь этот материал в одном или двух томах, поэтому будьте готовы к длительной работе. Мы надеемся, что процесс изучения, а также процесс составления программ для Windows будет приятен и вы не только испытаете головную боль (чего никак не избежать!), но и получите удовлетворение.
Что вам нужно уметь и иметь, для того чтобы приступить к работе?
Вы должны свободно владеть языком программирования C++. В настоящее время есть много книг, посвященных C++. Поэтому, если вы раньше использовали C, затратив две-три недели, вы без труда научитесь использовать основные возможности C++. Мы, в свою очередь, будем стараться не злоупотреблять различными "тонкими моментами".
Хотя это может показаться странным, от вас не потребуется глубоких знаний прерываний BIOS или DOS. Дело в том, что в программах, рассчитанных на работу в среде Windows, эти прерывания используются крайне редко, практически они нужны только в некоторых специальных случаях. Но вы обязательно должны представлять себе архитектуру персонального компьютера и знать принципы работы всех его устройств.
Так как операционная система Windows работает в защищенном режиме, мы рекомендуем вам обратиться к шестому тому "Библиотеки системного программиста", который называется "Защищенный режим работы процессоров Intel 80286/80386/80486". Вы должны знать механизм адресации оперативной памяти и механизм обработки прерываний, а также исключений в защищенном режиме работы процессора.
Windows является графической операционной системой, поэтому мы будем уделять много внимания выводу изображений на экран. И хотя вы не будете непосредственно программировать видеоадаптер, для того чтобы эффективно использовать возможности видеоадаптера, полезно знать основные принципы его работы. Вы можете обратиться к третьему тому "Библиотеки системного программиста", который называется "Программирование видеоадаптеров CGA, EGA и VGA". В этом томе мы рассмотрели основные принципы работы видеоадаптеров и приемы программирования.
Из-за ограниченного объема книги мы не в состоянии рассказать вам о работе пользователя в операционной системе Windows. Поэтому мы предполагаем, что вы уже умеете работать в этой операционной системе как квалифицированный пользователь.
Для отладки примеров программ авторы использовали попеременно два компьютера - один на базе процессора 80386DX-40, второй - на базе процессора 80486DX-33 с оперативной памятью соответственно 8 и 16 Мбайт и с объемом дисковой памяти 240 и 1300 Мбайт. Работа программ проверялась с видеоадаптерами OAK и Cirrus Logic с объемом памяти 1 Мбайт, причем последний представляет из себя акселератор Windows, способный работать в режиме True Color (16,7 млн. цветов). Для работы с мультимедиа мы использовали набор Multimedia Upgrade Kit "Sound Galaxy NX Pro(M)", в который входит 8-битовая стереофоническая звуковая плата, дисковод CD-ROM, микрофон и колонки.
Минимальные требования к компьютеру определяются, в основном, используемым транслятором. Мы пользовались транслятором Borland C++ for Windows версии 3.1. Для этого транслятора вполне достаточно, если ваш компьютер будет иметь 4 Мбайт оперативной памяти, причем в качестве процессора лучше использовать Intel 80386 или Intel 80486. Большинство программ будет работать и на процессоре 80286, но с таким процессором вы не сможете использовать расширенный режим работы Windows и виртуальную память.
Для трансляции программ, приведенных в этой книге, вы также можете воспользоваться средой Borland Turbo C++ for Windows версии 3.1 или Microsoft Visual C++ версии 1.0. Возможно также использование среды Borland C++ for Windows версии 4.0 или Symantec C++ версии 6.0.
Мы настоятельно рекомендуем использовать видеоадаптер VGA или SVGA. В этом случае у вас не будет проблем с отладчиком из поставки Borland C++ версии 3.1. Разработчики этого отладчика, вероятно, уже давно забыли о существовании таких видеоадаптеров, как CGA или EGA, поэтому с ними отладчик не работает. Кроме того (и это достаточно сильный аргумент), при использовании устаревших видеоадаптеров вы не сможете проверить работу своей программы во всех режимах, то есть вы не сможете ее полностью отладить.
Профессиональные программисты для разработки программ Windows иногда используют системы на базе двух компьютеров, соединенных нуль-модемным кабелем или объединенных в локальную сеть. При этом на одном компьютере работает отладчик, а на другом - отлаживаемая программа. Такой подход дает наибольшую гибкость и производительность при отладке. Начинающим программистам мы рекомендуем использовать один компьютер и одноэкранный отладчик, который входит в комплект Borland C++.
Немного о структуре книги.
В первой главе мы расскажем об основах операционной системы Microsoft Windows. Будут описаны основные компоненты и подсистемы Windows. Мы приведем в качестве примеров исходные тексты простейших приложений, предназначенных для работы в среде этой операционной системы.
Вторая глава посвящена выводу текста в окна, создаваемые приложениями Windows. Вывод текста в среде Windows должен выполняться при помощи специально предназначенных для этого функций программного интерфейса Windows. Методы, которые вы использовали при создании программ MS-DOS, непригодны для приложений Windows.
Третья глава - о создании окон. Вы узнаете о стилях класса окна и о стилях окна. Мы познакомим вас с основными стилями, которые встречаются практически во всех приложениях Windows. Это перекрывающиеся (overlapped), временные (pop-up) и дочерние (child) окна. Мы приведем пример приложения, создающего окна с перечисленными выше стилями.
В четвертой главе описаны функции, позволяющие получить информацию о метриках объектов Windows, таких, как окна, пиктограммы и т. п., а также о возможностях устройств ввода/вывода.
В пятой главе мы расскажем о том, как приложения Windows работают с клавиатурой. Вы узнаете о типах сообщений, генерируемых клавиатурой, о таблицах кодировки MS-DOS и Windows, о том, как приложения Windows работают с текстовым курсором.
Шестая глава посвящена мыши. Мы опишем сообщения, поступающие от мыши, расскажем о том, как управлять из приложения курсором мыши и как дублировать работу мыши при помощи клавиатуры.
В седьмой главе описаны приемы работы с таймером.
В приложениях мы расскажем о включаемом файле windows.h, который используется при создании любых приложений Windows, расскажем о типах данных и именах констант, определенных в файле windows.h, а также о системе обозначений типов, принятой для имен параметров функций и переменных. Мы также расскажем об особенностях различных моделей памяти, об использовании символов кириллицы. Будет описан интерфейс EasyWin, упрощающий перенос программ из среды MS-DOS в среду Windows. Отдельный раздел приложения посвящен отладке приложений Windows.
Мы рекомендуем вам в процессе работы над книгой изучать приведенные примеры приложений, исследуя их непосредственно на компьютере. Вместе с книгой продается дискета, содержащая исходные тексты всех приложений.
Авторы выражают благодарность за ценные советы
по содержанию книги Синеву Максиму и Ноженко
Сергею. Мы также благодарим сотрудников
издательского отдела "Диалог-МИФИ":
Голубева Олега Александровича, Дмитриеву
Наталью, Виноградову Елену, Кузьминову Оксану.
Наша особая благодарность корректору Кустову
Виктору.