Робота з Windows API в CBuilder

Windows API (Application Programming Interface, інтерфейс програмування додатків в Windows) незримо присутній за всім блиском VCL і чудесами інтегрованого середовища розробки CBuilder У VCL немає нічого, що не можна було б зробити в Windows API, і з дуже простої причини Все в Windows працює через API Операційна система сама підтримує цей інтерфейс і використовує його у всіх своїх допоміжних програмах Незалежно від того, наскільки складний код, зрештою все зводиться до викликів API

Windows API містить кілька тисяч різних функцій, розділених на десятки основних категорій Якщо ви хочете вивчити API, чи не краще просто сісти і прочитати документацію, поки ви не знайдете функції, потрібні вашого додатком Ні, не краще Вивчення звязків між функціями API може зайняти роки, а написання програми – місяці, і взагалі-то основна ідея VCL і CBuilder і полягає в тому, щоб позбавити себе від спілкування з усім цим

Уникати Windows API – правильний підхід, я настійно рекомендую вам його Проте буває, що VCL не може зробити те, що вам потрібно, тим самим повергаючи вас в пучину Windows API (якщо ви, звичайно, хочете зробити роботу) Якщо ви програміст на Delphi або Visual Basic, то ви вже, напевно, здригається від жаху Спілкування з Windows API в цих мовах може стати кошмаром, якщо потрібна функція запрошувати типи даних, яких у вас немає

На щастя, CBuilder використовує не Basic або Pascal, а C + + Спілкування з Windows API з C + + не важче, ніж це було на початковому мові програмування для API – С Так що ваша робота вже буде простіше Є тільки одне питання: коли потрібно звертатися до Windows API

У цьому розділі ми вивчимо кілька речей, для яких потрібно використовувати Windows API Наприклад, в CBuilder немає прямого способу зясувати, запустив Чи вже користувач копію вашої програми Якщо ваша програма сподівається на одноосібне володіння яким-небудь файлом на диску (наприклад, базою даних) і запускаються дві копії додатку, то результати будуть просто страшними Дослідження проблем, повязаних з множинними копіями програми, запущеними одночасно, – нетривіальна робота Зазвичай набагато простіше заборонити користувачеві запускати другу копію Це не годиться для невеликих утиліт, які

користувач може захотіти запустити в двох примірниках, але цілком підходить для корпоративних додатків

Ще одним прикладом використання Windows API може служити визначення розміру вільного місця на диску, отримання мітки диска, атрибутів файлів та іншої інформації, що зберігається в системі Це питання також буде розглянуто в поточній чолі

Спілкування з файлами, «перенесеної» на ваш додаток, – одна з основних проблем при використанні операційної системи Windows 95/NT Наприклад, вам може знадобитися дозволити користувачеві вибрати кілька файлів для обробки в генераторі звітів Іншим програмам може, наприклад, знадобитися список перенесених файлів для відправки їх по Internet Що б ви не робили, VCL допоможе вам – але не завжди Додати обробник повідомлення, яке надсилається при перетягуванні файлів, тривіально Але пояснити системі, що вам в першу чергу потрібно перетягнути файли, виключно засобами VCL неможливо У цій главі ви зрозумієте, як це зробити з мінімумом проблем і витрат

Остання проблема для програміста – розробка вікон нестандартного вигляду, які чому-то подобаються деяким користувачам Як саме ви поясните VCL, що хочете, щоб ваші кнопки були круглими Відповідь лежить – ви вгадали – у Windows API Його ми також розберемо в цій главі

Найбільша проблема при роботі з декількома тисячами функцій Windows API полягає не в їх виклик, а у виборі потрібної Тут реальну допомогу надають файли довідки за Win32 SDK Як це не дивно, Borland поставляє копії файлів Win32 SDK Help разом з системою CBuilder Перемістившись в каталог CBuilder \ Help, ви побачите інший каталог, MSHelp Всередині цього каталогу ви знайдете декілька файлів довідки, включаючи файл довідки KnowledgeBase (база знань) (Kbasehlp) і файл довідки Win32 SDK (Win32SDKhlp) Ви можете або додати ці файли до середовища Borland OpenHelp, або просто додати їх у меню Tools інтегрованої середовища CBuilder

Файл довідки KnowledgeBase корисний, коли ви намагаєтеся зясувати, яким саме чином вирішити якусь стандартну програмістську проблему

Обстеживши цей файл довідки, я тут же знайшов інформацію про такі проблеми, як:

· отримання інформації про гнучкі дисках

· отримання імя файлу через посилання (instance) на вікно

· GLLTEXE: Приклад: Демонструє просту підсвічування в OpenGL

Ці приклади – всього лише шматочок сотень незалежних статей бази KnowledgeBase, яка представлена ​​у вигляді файлу довідки для допомоги в написанні і налагодженні додатків під Windows З очевидних причин цей файл довідки не містить інформації про CBuilder (зрештою, це не продукт Microsoft), але знання потрібної для даної задачі функції API може допомогти вам при написання того, що вам потрібно в CBuilder

Другий файл в цьому каталозі, Win32SDKhlp, з тих, до яких ви будете звертатися найбільш часто Цей файл містить повний лістинг функцій Win32 SDK у форматі довідкової системи Ви можете знайти потрібну функцію по імені, щоб подивитися, які у неї параметри, переглядати функції по категоріях і досліджувати структури, використовувані даними функціями API в цьому файлі довідки

Для пошуку специфічної функції використовуйте файл Win32SDKhlp, так як він оптимізований для пошуку окремих функцій Для зясування ж шляхи вирішення конкретного завдання краще дивитися файл довідки KnowledgeBase, тому що він орієнтований більше на завдання і проблеми, ніж файл SDK

Отже, як саме вам знайти функцію, що робить щось, потрібне вашого додатком Відповідь проста: шукати функцію, більш-менш відповідну за назвою, або запитати кого-небудь, хто вже цим займався Ось де знадобляться конференції Internet News Groups (USENET) або книжки типу цієї Ви зазвичай вчитеся в процесі, і ті з вас, хто займався цим ще відтоді, коли SDK був єдиним варіантом, швидко знайдуть потрібну функцію Люди, що стартували прямо з CBuilder, знаходяться тут в певному скруті Я настійно вам рекомендую взяти хорошу книгу з основ програмування під Windows і прочитати її від кірки до корки Ви, може бути, ніколи і не будете нічого писати на С на низькому рівні, використовуючи SDK, але тим не менше ви нічого не втратите, якщо будете розуміти, як це робиться Це також допоможе вам оцінити, який обсяг роботи роблять за вас автоматично VCL і CBuilder

Давайте відразу почнемо з дуже простого приклад, що показує міць API Проблема, яку ми намагаємося вирішити, – як заборонити користувачеві запускати другу копію додатку Насправді нам, звичайно, хочеться не тільки забороняти запускати другу копію додатку, але і при спробі запуску другої копії додатку висувати вікно першої копії на передній план, щоб воно було видно Частенько користувач зовсім не збирається запускати другу копію, просто він «втрачає» вікно першої копії за іншими вікнами

Джерело: Теллес М – Borland C + + Builder Бібліотека програміста – 1998

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*