Книги: [Классика] [Базы данных] [Internet/WWW] [Сети] [Программирование] [UNIX] [Windows] [Безопасность] [Графика] [Software Engineering] [ERP-системы] [Hardware]
Введение
Выход версии 6.0 Visual C++ показал, что основные усилия Microsoft по-прежнему сосредоточены в области технологий Интернета и СОМ, которые являются ключевыми компонентами Windows Distributed interNet Application Architecture (DNA). Помимо поддержки этих платформ, Visual C++ 6.0 также содержит впечатляющий набор средств повышения производительности труда, в том числе Edit And Continue, IntelliSense, AutoComplete и подсказки по коду (code tips). Все эти возможности поднимают Visual C++ на новый уровень. При написании данной книги нашей основной задачей было помочь Вам не отстать от технологий, появившихся в Visual C++ 6.0.
MFC, ATL и WFC - MFC мертва?
Еще после выхода Microsoft ATL (Active Template Library) в составе Visual C++ у разработчиков программ для Windows появилось подозрение, что Microsoft Foundation Class Library (MFC) "вышла из моды" в Microsoft, и дальнейшие усилия будут сосредоточены на развитии новых библиотек, таких как ATL. Недавно Microsoft выпустила еще одну библиотеку классов WFC (Windows Foundation Classes) для разработчиков, пишущих для Windows на Java, что, к сожалению, способствовало распространению слухов на тему "MFC мертва".
Разговоры о смерти MFC, несомненно, преждевременны. В Visual C++ 6.0 значительно расширены как MFC, так и ATL. Это доказывает, что обе библиотеки развиваются и получают внимание в одинаковой степени. Частично проблема состоит в том, что иногда направления разработки обеих библиотек не объявляются вполне четко, и разработчики, использующие Visual C++, недостаточно ясно их представляют. MFC разрабатывается как мощная библиотека классов для создания сложных Windows-приложений с богатым графическим интерфейсом. ATL предназначена для создания очень небольших СОМ-объектов и элементов управления ActiveX. Эти два различных направления привели к созданию двух разных библиотек в помощь разработчикам.
Другой распространенной ошибкой является мнение о том, что MFC и ATL исключают друг друга. Это совершенно не так! На самом деле, очень легко создать СОМ-объекты, использующие MFC, на основе ATL. Единственная проблема состоит в том, что поскольку многие разработчики выбирают ATL за то, что она позволяет получать код малого размера, постольку использование MFC, которая богата возможностями, и является "тяжелой", выглядит противоречащим причине использования ATL. Хотя это может быть важно для некоторых разработчиков, но вовсе не делает ATL и MFC взаимоисключающими.
Хотя ATL и не заменяет MFC, она является важной частью Visual C++, поэтому в данном издании книги добавлено две главы, посвященные этой библиотеке.
C++ и Java
В течение нескольких последних лет значительно вырос интерес к языку программирования Java. Чем C++ лучше Java? Во-первых, скомпилированная программа всегда будет работать быстрее интерпретируемой. Представьте себе мощную программу электронных таблиц с поддержкой формул для ячеек и макросами, теперь представьте себе виртуальную машину Java, интерпретирующую код, который в свою очередь, интерпретирует формулы и макросы. Не очень быстро, не так ли? При использовании технологии компиляции just-in-time компилировать программу необходимо при каждом ее запуске. Но будет ли полученный код исполняться столь же быстро, как код на выходе оптимизирующего компилятора C++?
Скорость работы - это только один из факторов выбора языка; другим является возможность доступа к операционной системе (ОС). По соображениям безопасности аплеты Java не могут выполнять такие операции, как запись на диск и обращение к последовательным портам. Для достижения независимости от платформы прикладные программы Java ограничены "наименьшим общим знаменателем" возможностей ОС. Программа на C++ для Microsoft Windows имеет более широкие возможности, так как может вызвать любую функцию Win32 в любой момент.
Java останется действующим языком программирования, но мы полагаем, что это просто еще один язык, а не тотальная революция. Если Вам нужен аплет для Интернета или действительно не зависящее от платформы приложение - используйте Java. Если же нужны эффективность и гибкость - ваш выбор C++.
Кому адресована эта книга
Название продукта "Visual C++" вводит некоторых программистов в заблуждение. Они полагают, что купили полностью визуальную систему программирования, аналогичную Microsoft Visual Basic, и в течение нескольких первых дней иллюзия не исчезает. Однако скоро наступает понимание, что создание программы на C++ требует больших усилий. Мастеры Visual C++ экономят время и повышают производительность труда, но программисты должны понимать код, создаваемый мастерами и, в конечном счете, структуру библиотеки MFC; и устройство ОС Windows.
Visual C++ с ее мощными средствами разработки приложений предназначена для профессиональных программистов, и эта книга - тоже для них. Мы считаем, что Вы достаточно хорошо знаете C++ и можете написать оператор if, не обращаясь к справочнику. Мы также предполагаем, что у Вас есть некоторый опыт работы на C++ - по крайней мере, Вы прошли некоторый курс обучения или прочитали какую-нибудь книгу о нем, хотя может быть и не писали очень больших программ. Изучение C++ можно сравнить с изучением французского. Даже если Вы учили французский в школе, Вы не сможете свободно говорить на нем, пока не поедете во Францию и не пообщаетесь с носителями языка. Чтение этой книги похоже на такую поездку во Францию!
Однако мы не считаем, что Вы знакомы с программированием для Windows. Мы уверены, что опытные программисты на C++ могут изучать Windows посредством MFC. Знание C++ важнее знания API Win32. Тем не менее, мы полагаем, что читатель умеет работать с Windows и Windows-приложениями.
Что, если у Вас уже есть опыт работы с API Win32 или с библиотекой MFC? В этой книге найдется кое-что интересное и для Вас. Во-первых, Вы получите определенную помощь в переходе к Win32 программированию. Во-вторых, узнаете о новых возможностях, таких, как DAO (Data Access Objects), поддержка контейнера элементов управления ActiveX, а также новых элементах управления Windows 95. Если Вы еще не знакомы с моделью СОМ (Component Object Model), эта книга содержит некоторые важные теоретические сведения, с которых начнется ваше знакомство с элементами управления ActiveX. Вы также познакомитесь с библиотекой классов ATL, стандартными элементами управления Microsoft Internet Explorer 4.0 и программированием для баз данных с использованием OLE DB. Наконец, Вы познакомитесь с программированием на C++ для Интернета (включая новую технологию Dynamic HTML). Мы даже включили информацию о том, как заставить ваши программы на Visual C++ работать в ОС Windows СЕ.
Что не вошло в книгу
В одной книге невозможно рассмотреть все стороны программирования для Windows. Мы исключили темы, требующие специализированных аппаратных или программных средств, такие как MAPI, TAPI и работу с коммуникационными портами. Мы рассмотрим использование элементов управления ActiveX в приложениях, но оставим тему написания элементов управления ActiveX Адаму Деннигу (Adam Dennig) и его книге ActiveX Controls Inside Out (Microsoft Press, 1997). Мы познакомим Вас с основами 32-разрядного управления памятью, теории DLL и приемами многопоточного программирования, но для серьезно изучения этих тем Вам потребуется книга Джеффри Рихтера (Jeffrey Richter) Advanced Windows (Microsoft Press, 1995) (Д. Рихтер. Windows для профессионалов, М.: Русская Редакция, 1997). Другая полезная книга - MFC Internals Джорджа Шеферда и Скотта Уингоу (Addison-Wesley, 1996).
Как пользоваться книгой
В начале работы с Visual C++ книгу можно использовать как учебник и читать ее последовательно. Затем книгу можно использовать в качестве справочника, отыскивая нужные темы по оглавлению или по предметному указателю. Из-за тесной взаимосвязи, существующей между большинством компонентов MFC, невозможно рассматривать каждый аспект в отдельной главе, поэтому издание, безусловно, не может рассматриваться как энциклопедия. Читая данную книгу, полезно иметь под рукой интерактивную справочную систему Visual C++ для просмотра информации о классах и функциях-членах.
Если Вы имеете опыт работы с версией Visual C++ для Win 16, просмотрите первую часть, чтобы получить представление о новых возможностях. Затем пропустите первые три главы второй части, но прочитайте главы 6-12, где рассмотрены специфичные для Win32 вопросы.
Win32 или Win16?
Windows 3.1 все еще встречается на некоторых старых компьютерах. Однако нет особого смысла тратить средства и время на создание новых программ для устаревших технологий. Это, 5-е издание книги посвящено 32-разрядному программированию для Microsoft Windows 95, Microsoft Windows 98 и Microsoft Windows NT с использованием API Win32. Если Вам действительно нужно писать 16-разрядные программы, отыщите второе издание книги.
Windows 98 или Windows NT 4.0?
Visual C++ версии 6.0 требует Windows 95, Windows 98 или Windows NT 4.0 или старше. Все эти ОС имеют одинаковый пользовательский интерфейс. Мы рекомендуем в качестве платформы разработчика использовать Windows NT, так как она более стабильна - зачастую можно месяцами не перезагружать компьютер. Если Вы используете только MFC, то ваши программы будут исполняться под Windows 95, Windows 98 и Windows NT, но программа может содержать вызовы Win32, использующие специфичные для Windows 98 или Windows NT возможности.
Использование возможностей Windows: вставки "Для тех, кто программирует в Win32"
В этой книге нет возможности рассказать обо всех деталях, приемах и скрытых возможностях, которые можно найти в новых специализированных книгах по Win32. Большинство таких книг написано с точки зрения программиста на С: чтобы использовать их, Вы должны понимать низкоуровневые API Win32 и соотношение между ним и библиотекой MFC. Кроме того, потребуются знания о механизме обработки сообщений Windows и о роли классов окон (Windows classes).
Вставки "Для тех, кто программирует в Win32", разбросанные по тексту книги, помогут Вам установить связь с низкоуровневыми программными интерфейсами Windows. Если низкоуровневое программирование Вам незнакомо, то пропустите эти вставки при первом прочтении книги, но прочтите их, если будет читать книгу во второй раз. Хотя Вам, возможно, и не придется писать низкоуровневую программу для Windows, использующую, например, функцию WinMain, понимать то, как ваша программа взаимодействует с ОС Windows, необходимо в любом случае.
Начало
Полное содержание
Структура книги
Об авторах
Компакт-диск
Заказать книгу в магазине "Мистраль"