netlib.narod.ru< Назад | Оглавление | Далее >

Введение

В этой книге рассказывается о том, как писать программы для Microsoft Windows. Способов написания таких программ много, но здесь для этого используются новый объектно-ориентированный язык C# (произносится «Си-шарп») и современная библиотека классов Windows Forms которая входит в состав Microsoft .NET Framework — платформы, представленной публике летом 2000 г. и реализованной спустя примерно полтора года после этого события.

Microsoft .NET Framework — это набор классов, предоставляющий программистам многое из того, что необходимо для создания приложений для Интернета, Web и Windows. Периодические журналы освещали .NET в основном как средство программирования для Web, а в этой книге .NET обсуждается с другой стороны. Windows Forms используют для написания как традиционных автономных приложений для Windows (сейчас их иногда называют клиентскими) так и интерфейсной части распределенных приложений.

Библиотека Windows Forms предоставляет практически все, что нужно для создания полноценных приложений для Windows. Правда, есть один пробел: в этой библиотеке начисто отсутствует поддержка мультимедиа. В Windows Forms нет даже функции, которая заставила бы пищать динамик компьютера! Я, порывался написать собственные мультимедийные классы, но благоразумно (надеюсь) решил повременить с этим, ожидая появления в следующем выпуске Windows Forms гибкой, мощной и простой в использовании поддержки мультимедиа.

Классы, определенные в .NET Framework нейтральны по отношению к языку. Microsoft выпустила новые версии C++ и Visual Basic, а также новый язык программирования — C#. Другие производители также приспосабливают создаваемые ими языки программирования для работы с классами .NET. Компиляторы новых языков преобразуют исходный текст в .ехе-файл, содержащий код на промежуточном языке. Во время выполнения этот код компилируется в машинные коды, подходящие для исполняющего программу микропроцессора. Таким образом, .NET потенциально независима от аппаратной платформы.

Я выбрал для этой книги именно С#, так как C# и .NET в прямом смысле слова созданы друг для друга. Поскольку .NET Framework нейтральна по отношению к языку, по этой книге можно учиться писать приложения Windows Forms и на других языках.

Эволюция программирования для Windows

Первая версия Windows выпущена Microsoft в 1985 г. С тех пор Windows постоянно улучшалась и обновлялась, но самые грандиозные изменения относятся к 1993 (Windows NT) и 1995 (Windows 95) годам, когда Windows перешла с 16-разрядной архитектуры на 32-разряднуюю.

В первое время после выхода Windows был только один способ создания приложений для Windows — вызов функций интерфейса прикладного программирования (API) Windows из программ на языке С. Хотя Microsoft Pascal также позволял вызывать функции API Windows, этим языком пользовались редко.

За эти годы к программированию для Windows было приспособлено множество других языков, включая Visual Basic и C++. Как C++, так и C# — это объектно-ориентированные языки, поддерживающие большинство операторов, выражений и конструкций С. Поэтому C++ и C# (а также Java) иногда называют языками программирования на основе С или языками семейства С.

С выходом .NET число подходов, предлагаемых Microsoft для написания Windows-приложений на языках семейства С, увеличилось до трех:


Эволюция подходов (ориентированных на продукцию Microsoft)
к программированию для Windows на языках семейства С


Год выхода Язык Интерфейс

1985 C Интерфейс прикладного программирования (API) Windows
1992 C++ Библиотека Microsoft Foundation Classes (MFC)
2001 C# или C++ Windows Forms (часть .NET Framework)


Я не собираюсь учить вас тому, какой интерфейс или язык выбирать для создания Windows-приложений, — вы должны это сделать самостоятельно в зависимости от поставленной перед вами задачи и доступных ресурсов.

Если вам нужны дополнительные источники информации по Windows API, то многие нашли полезной в этом плане мою книгу «Programming Windows» (5-е изд., Microsoft Press, 1998).

Мне никогда не нравилась MFC. Еще до выхода этой библиотеки у меня сложилось отрицательное впечатление об ее конструкции, более того, я считаю, что MFC едва ли можно назвать объектно-ориентированной библиотекой. Но это мое личное мнение, другие программисты с успехом используют MFC, и это до сих пор один из самых популярных подходов к программированию для Windows. Хорошее пособие для изучения MFC — книга Джефа Прозиса (Jeff Prosise) «Programming Windows with MFC» (2-е изд., Microsoft Press, 1999). Для более опытных программистов также могу порекомендовать книгу Джеффри Рихтера (Jeffrey Richter) «Programming Applications for Microsoft Windows» (4-е изд., Microsoft Press, 1999).

С моей точки зрения, библиотека Windows Forms организована намного лучше, чем MFC, и в моем представлении она намного ближе к идеальному объектно-ориентированному интерфейсу для Windows. За 14 месяцев, отданных этой книге, использование Windows Forms стало моим любимым подходом к программированию для Windows.

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

Очевидно, что MFC и Windows Forms не только повышают производительность программиста, но и, подобно любому интерфейсу более высокого уровня, обладают меньшей гибкостью по сравнению с интерфейсом более низкого уровня. Windows API позволяет делать много такого, что невозможно при использовании классов Windows Forms.

К счастью, приложив немного дополнительных усилий, можно вызвать из программы Windows Forms функцию API Windows. Здесь я применял это средство лишь иногда — сталкиваясь со слишком большими пробелами в функциональности .NET. Обычно, следуя принципу своей философии, я стараюсь не нарушать изоляцию внутренних механизмов Windows, предлагаемую Windows Forms.

Требования к читателю

Для плодотворной работы с этой книгой надо иметь возможность компилировать и исполнять программы на C#. Для компиляции программ нужен компилятор C#, а для их исполнения — исполняющая среда .NET (или CLR), которая представляет собой набор динамически подключаемых библиотек.

Все это есть в Microsoft Visual C#, современной интегрированной среде разработки. Вместо Visual C# можно приобрести более мощную (и, естественно, более дорогую) среду Microsoft Visual Studio .NET, которая в дополнение к C# позволяет программировать на C++ и Visual Basic.

Если вы сторонник варианта «дешево и сердито», можно скачать бесплатный пакет для разработки программ .NET (.NET Framework SDK), В него входят компилятор C# и исполняющая среда .NET. Для этого откройте страницу http://msdn.microsoft.com/downloads, выберите слева ссылку Software Development Kits и найдите в списке .NET Framework (помните, что в любой момент содержимое и адрес этого и других Web-узлов, упомянутых в этой книге, может измениться, а в порой узлы могут вовсе исчезнуть).

Эта книга написана, исходя из что вы умеете программировать хотя бы на С. Знание C++ или Java полезно, но не обязательно. Поскольку С# — новый язык, в первой главе дается краткое введение в С# и разъясняются необходимые понятия объектно-ориентированного программирования. При изложении материала я часто буду обсуждать различные понятия C# по мере знакомства с ними.

Однако эта книга — не исчерпывающее пособие по С#. Для повышения уровня знаний и мастерства владения языком обращайтесь к другим источникам. Несомненно, их станет еще больше по мере роста популярности языка. Книга Тома Арчера (Tom Archer) «Inside C#» дает сведения не только о программировании на С#, но и о более глубоких процессах, a «Microsoft Visual C# Step by Step» (Microsoft Press, 2001) Джона Шарпа (John Sharp) и Джона Джэггера (Jon Jagger) больше похожа на учебник.

Я иногда буду ссылаться на функции API Windows. Как я уже говорил, в случае затруднений обращайтесь за дополнительным разъяснением к моей книге «Programming Windows».

Требования к системе

Как сказано в предыдущем разделе, для эффективной работы с этой книгой читатель должен иметь возможность компилировать и исполнять программы на C#. К системе же предъявляются такие требования:

Чтобы программы, написанные на C#, можно было исполнять на других компьютерах, на них должна быть установлена исполняющая среда (также называемая свободно распространяемым пакетом .NET Framework). Этот пакет поставляется вместе с .NET Framework SDK, Visual C# и Visual Studio .NET и может быть установлен в вышеупомянутые версии ОС Windows, а также в Windows 98 и Windows Millennium Edition (ME).

Чтобы установить файлы примеров с прилагаемого к этой книге компакт-диска на жесткий диск, потребуется около 2,1 Мб свободного места (полностью компилированные примеры занимают более 20 Мб).

Структура книги

В первом выпуске Windows 1.0 весь API умещался в трех динамически подключаемых библиотеках — KERNEL, USER и GDI. Хотя с тех пор число и объем DLL Windows сильно увеличилось, все же полезно делить функции (или классы) Windows на три категории. Во-первых, это функции ядра. Они реализованы во внутренней части ОС и, как правило, отвечают за многозадачность, управление памятью и операции файлового ввода-вывода. Термином user здесь обозначен пользовательский интерфейс. К нему относятся функции для создания окон, работы с меню и диалоговыми окнами, а также элементами управления, такими как кнопки и полосы прокрутки. GDI (Graphics Device Interface) — это интерфейс графических устройств, часть Windows, ответственная за вывод графической информации (включая текст) на экран и принтер.

Книга начинается вводными главами. Темы глав с 5 (где рассказывается о рисовании прямых и кривых) по 24 (о буфере обмена Windows) чередуются: главы с нечетными номерами посвящены программированию графики, а с четными — пользовательскому интерфейсу.

Обычно в подобных книгах уделяют мало внимания таким далеким от Windows темам, как файловый ввод-вывод, вычисления с плавающей точкой и работа со строками. Однако новизна .NET Framework и C# диктует необходимость включения руководства по соответствующим классам .NET. Некоторые разделы таковыми и являются, а именно три приложения, посвященные обработке файлов, математическим вычислениям и работе со строками. К этим приложениям можно обращаться в любое время после прочтения первой главы.

Я попытался упорядочить главы и материалы каждой главы так, чтобы построить изложение каждой следующей темы на основе предыдущей и обойтись минимумом «опережающих ссылок». Эта книга написана так, чтобы ее можно было читать последовательно с начала до конца, почти как полную версию «Противостояния» или «Закат и падение Римской Империи».

Хорошо, когда такую книгу можно не только читать подряд, но и использовать как справочник. С этой целью большинство важных методов, свойств и перечислений, используемых при программировании в Windows Forms, вынесены в таблицы в тех главах, где они обсуждаются. Но даже в такой большой книге невозможно охватить все о Windows Forms, поэтому она не может заменить официальную документацию по классам .NET.

Написание программ Windows Forms требует определенных усилий, поэтому вы найдете здесь множество примеров кода в виде законченных программ, фрагменты которых можно совершенно свободно копировать и вставлять в собственные разработки (здесь они приводятся именно для этого). Но не распространяйте код или программы в исходном виде поскольку для этой цели служит книга.

У компилятора С# есть потрясающая функция, позволяющая записывать комментарии в виде тэгов XML. Однако я не использовал ее, поскольку приведенные здесь программы, как правило, содержат мало комментариев, а основное описание кода приводится в тексте.

Возможно, вы знаете, что Visual C# позволяет интерактивно конструировать внешний вид приложений. Вы можете располагать разные элементы управления (кнопки, полосы прокрутки и т.п.) на поверхности окна программы, a Visual C# генерирует соответствующий код. Подобные методики полезны для быстрой разработки диалоговых окон и приложений, богатых элементами управления, однако здесь я проигнорировал эту возможность Visual C#.

В этой книге мы не дадим Visual C# генерировать код за нас, а будем учиться писать его самостоятельно.

Прилагаемый компакт-диск

На компакт-диске содержатся все программы-примеры. Можно загружать решения (файлы с расширением .sln) или проекты (файлы с расширением .csproj) в Visual C# и компилировать их.

Честно говоря, я никогда особо не пользовался компакт-дисками, прилагаемыми к книгам. При изучении нового языка программирования я предпочитаю набивать исходный текст самостоятельно, даже если это чужая программа. Мне кажется, что так можно быстрее выучить язык, но это моя привычка.

Если вы потеряете или повредите компакт-диск, не шлите мне писем с просьбой заменить его: по условиям договора с издательством я не могу этого сделать. Microsoft Press является единственным распространителем этой книги и прилагаемого к ней диска. Для замены компакт-диска, получения дополнительных сведений или технической поддержки свяжитесь с Microsoft Press (см. контактную информацию ниже в разделе «Техническая поддержка»).

Техническая поддержка

Я приложил все усилия, чтобы обеспечить точность сведений, изложенных в книге и записанных на компакт-диске. Поправки к этой книге предоставляются Microsoft Press через World Wide Web по адресу:


http://www.microsoft.com/mspress/support


Чтобы напрямую подключиться к Базе знаний Microsoft Press и найти информацию, откройте страницу:


http://www.microsoft.com/mspress/support/search.asp


Пожалуйста, присылайте комментарии, вопросы и предложения, касающиеся этой книги или прилагаемого к ней диска, в Microsoft Press.


по обычной почте


Microsoft Press
Attn: Programming Microsoft Windows with C# Editor
One Microsoft Way
Redmond, MA 98052-6399


или по электронной почте


MSPINPUT@MICROSOFT.COM


Пожалуйста, обратите внимание, что по этим адресам не предоставляется техническая поддержка. Информацию о технической поддержке C#, Visual Studio или .NET Framework вы найдете на Web-узле Microsoft Product Support по адресу:


http://support.microsoft.com

Особые благодарности

Писателю обычно приходится работать в одиночку, но, к счастью, вокруг всегда находятся люди, облегчающие его труд.

Я хочу поблагодарить моего агента Клодетт Мур (Claudette Moore) из Литературного агентства Мур за то, что она постоянно поддерживала этот проект «на плаву» и взяла себя труд разобраться со всеми запутанными юридическими вопросами.

Как всегда, сплошным удовольствием была работа с сотрудниками Microsoft Press, которые в очередной раз спасли меня от конфуза. Если бы не редактор проекта, Сэлли Стикни (Sally Stickney) и технический редактор Джин Росс (Jean Ross), примеры программ в этой книге были бы путаными и полны ошибок. Хотя порой мне кажется, что мои редакторы обладают сверхчеловеческими способностями, это, увы, не так. Любые ошибки или невнятные фразы остались исключительно по моей вине.

Да, хочу еще выразить признательность Иоганну Брамсу за музыкальный аккомпанемент к моей работе и Энтони Троллопу, чьи произведения позволили мне отвлекаться от работы во время вечернего чтения.

Мои друзья, собирающиеся у меня по воскресеньям, вторникам и четвергам помогали мне и оказывали поддержку, порой незаметную со стороны, но всегда бесценную, и будут делать это дальше.

Больше всех я хотел бы поблагодарить мою невесту Дэйдру, обеспечившую инфраструктуру совсем иного рода (.NET тут ни при чем), позволяющую мне жить, работать и любить.

Чарльз Петзольд
Ноябрь 2001, Нью-Йорк


netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz