Главная страница Visual 2000 · Общий список статей

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

Андрей Колесов

Рецензия на книгу:
Дан Эпплман. Win32 API и Visual Basic. Для профессионалов. — СПб.: "Питер", 2001. — 1120 с., компакт-диск.

© Андрей Колесов, 2002
Авторский вариант. Статья была опубликована c незначительной литературной правкой в еженедельнике PC Week/RE (№ 23/2002) PC Week/RE Online


Наверное, не стоит подробно объяснять в который уже раз о пользе (или даже, необходимости) использования Win API при разработке приложений. Встроенные в Windows функции (их точное число не знает даже Microsoft, чаще всего говориться о 7-8 тысячах) представляют собой мощный инструмент для расширения встроенных возможностей любого инструмента разработки. Это может выражаться либо в ускорении выполнения уже имеющихся языковых средств, либо в реализации операций, отсутствующих в данной системе.

Использование же Win API при VB-разработке всегда было особенно актуально, так как оно позволяло компенсировать ограничения Visual Basic по сравнению с системами на базе Си или Паскаль. Простой анализ многочисленных публикаций на тему "Советы и трюки для VB-программистов" показывает, что не менее 30-40% из них связано с использованием Win API.

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

Дан Эпплман написал свою первую книгу "Путеводитель VB-программистов в мир Win API" более 10 лет назад, с появлением еще самых первых версий VB. Она сразу же получила просто ошеломляющий успех и выдержала несколько переизданий. В 1995 году на смену ей пришло новое издание — о Win32 API для VB, которое также постоянно переиздается, пополняясь дополнительными сведениями с учетом появления обновленных версий VB. Вот достоверный исторический факт — в США на протяжении 10 лет эта книга Дана Эпплмана неизменно входит пятерку бестселлеров публикаций для VB-разработчиков среди нескольких десятков, всегда имеющихся в продаже.

Лично для меня эти книги (по Win16 и Win32) в течение многих лет являются настольными при разработке VB-приложений и написании статей по этой тематике. Четыре года назад после публикации рецензии на английское издание я получил большое число писем читателей с одним вопросом — где можно достать эту книгу? Тогда можно было дать только один ответ — в любом книжном магазине США за 60 долл. Сейчас ситуация изменилась — лучшее руководство по Win32 API для VB можно приобрести в России, на русском языке и гораздо дешевле.

Книга, выпущенная издательством "Питер" (www.piter.com), является переводом последнего американского издания, которые в целом, соответствует первоначальному варианту, появившемуся еще для VB5 в 1997 году. Напомним, что VB6 не внес каких-то заметных изменений при работе с Win API. Поэтому все программные примеры книги на компакт-диске приведены в формате VB5 и могут применяться для VB6. С использованием этих программ для VB.NET дело обстоит не столь оптимистично, но содержательная часть самой книги (а тем более огромного справочного материала, приведенного в ней) не менее, чем на 90% актуально и для VB.NET. (Можно не сомневаться, что в США книга Эпплмана "Win API для VB.NET" уже появилась.)

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

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

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

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

Хотя в книге приводится много справочного материала, и в ней обсуждаются не очень простые вопросы, она читается увлекательно. Переводчикам очень хорошо удалось сохранить непринужденный дружеский стиль общения автора с читателем. Это во многом способствует тому, что книга будет полезна не только профессиональным разработчикам, но и тем, кто лишь приступает к изучению тонкостей Windows-программирования. Отметим также очень удачное оформление (верстку) русского издания: его американский аналог имеет более 1500 страниц.

Пригодится также и прилагаемый компакт-диск, который является копией англоязычного издания (использование оригинального варианта может быть полезным в ряде случаев). Он включает полный текст книги и все программные примеры. Кроме того, там же находится ряд отдельных статей автора, а также большое число вспомогательных программ и демо-версии некоторых дополнительных продуктов.

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