Все о Win32 API для VB-программистов
Андрей Колесов

Рецензия на книгу:
Dan Appleman. Dan Appleman's VB 5.0 Programmer's Guide to the Win32 API, англ., издательство Macmillan Computer Publishing/Ziff-Davis Press, 1997. ISBN: 1-56276-446-2, 1548 с., компакт-диск.

© 1998, А.Колесов
Исходный, авторский вариант статьи. Рецензия с незначительной литературной правкой опубликована в еженедельнике PC Week/RE (№ 29/98, с.44), PC Week/RE Online


Автор этой книги, Дэн Эпплман, является очень авторитетной личностью среди мирового сообщества VB-программистов. Прежде всего, он сам является разработчиком множества дополнительных продуктов для VB. Компания Desaware, созданная и руководимая им, занимает в последние годы довольно заметное место на рынке вспомогательных VB-инструментов. Однако наибольшую известность Дэн получил как автор многочисленных статей (причем не только технического плана, но и посвященных анализу состояния и развития VB-разработки) и нескольких книг, а также как активный участник различных конференций.

Одной из коронных тем Эпплмана является использование API-функций. Его книга, впервые появившаяся в начале 90-х годов и посвященная использованию Win16 API для VB, на протяжении нескольких лет пользовалась огромной популярностью среди VB-программистов. Она исчезла из списка бестселлеров только в 1995 г. с выходом новой книги Дэна — о Win32 API и VB 4.0. Спустя два года издательство Ziff-Davis выпустило ее расширенный вариант, в котором в частности описаны новые возможности по использованию API-функций, появившихся в VB 5.0. Именно об этой книге здесь и пойдет речь.

Встроенные в ОС функции API представляют собой мощный инструмент для расширения встроенных возможностей любого инструмента разработки. Это может выражаться либо в ускорении выполнения уже имеющихся языковых средств, либо в реализации операций, отсутствующих в данной системе. (В этом плане Win API являются для Windows той же функциональной базой, что и системные функции DOS/BIOS для DOS.) Использование Win API при VB-разработке всегда было особенно актуально, так как именно оно позволяло компенсировать ограничения Visual Basic по сравнению с системами на базе Си или Паскаль.

В принципе вопросам использования Win API посвящено немало книг, не говоря уже о том, что полное описание этих функций для 32-разрядных систем приведено в Microsoft Win32 Software Development Kit. Однако при работе с ними возникают определенные проблемы. В первую очередь это связано с огромным числом функций (около полутора тысяч, не считая десятков различных операций для каждой функции), в то время как на практике круг наиболее актуальных процедур гораздо уже (классический закон статистики "двадцать из восьмидесяти"). Во-вторых, абсолютное большинство описаний ориентируется на круг C-программистов и не учитывает специфики Visual Basic: это касается как функциональных, так и чисто терминологических особенностей VB.

Книга Дэна Эпплмана решает, и весьма успешно, эти две проблемы, являясь одновременно и весьма представительным систематизированным справочником по API-функциям, и пособием по VB-программированию. Она содержит двадцать глав (четыре части), пять приложений и предметный указатель с перечнем функций, который занимает 60 страниц.

Первая часть (четыре главы) посвящена очень важным методическим вопросам построения Windows и технологии использования API и DLL в среде VB. Этот раздел относительно небольшой (133 страницы), но исключительно полезный. Особенно детально здесь рассматриваются описатели (handles) внутренних объектов Windows, принципы описания DLL-функций (частным случаем которых являются API), передача параметров, методы отладки, принципы перехода от 16- к 32-разрядным API, согласование C- и VB-терминологий и многие другие вопросы. Весь материал сопровождается наглядными схемами, таблицами и примерами. Следует подчеркнуть, что в силу различных причин в VB невозможно непосредственное использование ряда API-функций. В этой связи особый интерес представляет обсуждение методов преодоления этих ограничений с помощью дополнительных средств, некоторые из которых приведены на компакт-диске.

Вторая часть (11 глав) занимает основной объем книги — более 1100 страниц — и содержит собственно справочник по API-функциям с краткими примерами их применения. Представляется очень правильным, что в нем приведены и те операции, которые недоступны для VB — это позволяет разработчику лучше ориентироваться в ограничениях VB-среды и оценивать целесообразность выхода за ее пределы. В третьей части (три главы) отдельно обсуждаются возможности управления внутренними объектами Windows с помощью прямых установок параметров — Windows Messages. В четвертой части (две главы) содержатся расширенные примеры практического применения API-функций, в приложениях — различные дополнительные справочные данные о типах данных, форматах файлов и пр.

Прилагаемый к книге компакт-диск содержит ПОЛНЫЙ текст книги и все программные примеры, а еще три дополнительные главы ("Serial Communications", "Network Functions" и "API Types Libraries"), которые не вошли в печатный вариант. Кроме того, там же находится ряд отдельных статей автора, а также большое число вспомогательных программ и демо-версии некоторых дополнительных продуктов.

Книга написана очень простым техническим английским языком без витиеватостей, которые иногда встречаются у американских авторов, почему-то чаще всего — у представителей их прекрасной половины. Уверен, что для понимания содержания книги будет вполне достаточно школьных познаний в английском, которыми должен обладать любой человек, желающий сколь-нибудь серьезно заниматься программированием. Если же таких знаний нет, то полезность книги послужит хорошим стимулом для их получения.

Где купить книгу? Тут представляются два реальных варианта. Мне ее привез знакомый, который ездил в США на неделю — он нашел эту книгу в первом же книжном магазине в небольшом провинциальном городке. Тем, кто имеет кредитную карточку (или друзей с таковой), проще всего заказать книгу через Internet, например на сервере www.windx.com (но стоимость доставки в Россию может составить 20-30 долл.). Периодически о возможности сделать заказ объявляют и российские компании, но точных сведений об этом у меня нет.

В начало статьи