Введение
О чем эта книга
Видимо, диск можно было бы продолжить в том же духе и стиле, который был принят в предыдущем параграфе, но, к сожалению, время для этого еще не пришло. Во-первых, новые технологии требуют осмысления, во-вторых, бета-версия Studio .NET работает недостаточно надежно, в-третьих, документация по новым технологиям ограничена и доступна, пожалуй, только на сайте Microsoft. Поэтому мы постараемся осветить только ту часть возможностей, предоставляемых новой версией Studio .NET, которая относится к разработке настольных (desktop) приложений с использованием Visual C++ 7.0. Указанную область нельзя назвать узкой, так как она объединяет достаточно большое количество типов разрабатываемых приложений:
- приложения на основе MFC (Microsoft Foundation Classes);
- DLL СОМ-серверы на основе ATL;
- приложения с использованием библиотеки OpenGL;
- приложения, использующие динамические структуры данных и алгоритмы STL.
Вы узнаете, как управлять координатными пространствами Windows, как осуществлять взаимодействие нескольких представлений одного документа, как добиваться эффективности и реалистичности изображений OpenGL, как использовать Shell API для управления файловым деревом, как разрабатывать СОМ-серверы и СОМ-контейнеры, как синхронизировать множество элементов управления в рамках диалога, как создавать свои собственные нестандартные окна, как использовать контейнеры и алгоритмы стандартной библиотеки C++ (STL), как строить графики функций в трехмерном пространстве и, наконец, как решать простейшие краевые задачи с демонстрацией результатов в виде аккуратных графиков. Кроме того, в последней главе вы найдете информацию об архитектуре Windows, с точки зрения разработчика программного обеспечения.
При изложении материала я не стараюсь подробно рассматривать все технические детали использования какого-либо класса, функции или типа данных, так как, на мой взгляд, нецелесообразно ставить себе задачу запоминать детали. Во-первых, их очень много даже в рамках одной технологии, во-вторых, MSDN (Microsoft Developer Network) для того и существует, чтобы при необходимости быстро прийти на помощь, в-третьих, я верю в принцип: чем чаще используете, тем вероятней, что запомните. Вместо этого ставится задача показать, какие преимущества вы получаете, используя новую сущность или новый технологический прием, а главное, как их использовать.
Иногда, я все-таки пускаюсь в пространные описания очень мелких и, казалось бы, непринципиальных деталей, но это делается обычно только после того, как сам потратил в логической ловушке много времени и нервов, ища из нее выход. Жизнь программиста полна ловушек, которые обычно он сам себе и расставляет, что-то недоговаривая, оставляя на потом или просто проявляя лень. Здесь вспоминается поговорка, которую любил повторять на лекциях по математике профессор И. С. Серебрянский в Санкт-Петербургском Политехническом институте: "Математики – это умные лентяи". Думаю, что многие программисты тоже болеют этим недугом, что позволяет им создавать эффективные, краткие, изящные алгоритмы и программы.
Язык C++ служит благодатной почвой для произрастания нестандартных, сложных, порой замысловатых, логических конструкций и неожиданных решений. Новые технологии разработки приложений, а также категории API-функций, довольно проворно разрабатываемые компанией Microsoft, дают пищу фантазии программиста и делают его жизнь еще более беспокойной, разнообразной и от этого более интересной.