Блог gunsmoker-а програмування на winapi, частина 1 - де шукати інформацію
Це перша частина в циклі, присвяченому "програмування на WinAPI" в Delphi.
WinAPI - він же "Windows API", він же "Win32 API", він же "Application Programming Interface", він же "Прикладної інтерфейс програмування" - набір системних функцій ОС; найнижчий рівень для будь-якої прикладної програми, в тому числі - програм Delphi. Саме на системних функціях грунтуються всі інші функції прикладних програм. Програміст може викликати функції WinAPI, щоб зробити щось, не передбачене набором функцій мови і його бібліотеки підтримки. Як правило, робота з функціями WinAPI відрізняється від роботи з функціями і класами мови високого рівня.
Не будьте безпорадними! Ви самі можете знайти відповіді на ці питання. А цей цикл постів допоможе вам в цьому.
Почнемо ми з простого питання - де шукати інформацію.
- вашого коду
- Коду сторонніх бібліотек
- Delphi
- Системи (Windows)
- Пригадуєте, що не вирішували ви вже таку або подібну задачу. Шукаєте рішення в своїх исходниках (ви ж не видаляєте їх?).
- Якщо у вас стоять сторонні компоненти або бібліотеки (на кшталт JEDI), то ви шукаєте потрібну функцію в їх довідкових системах, або ж відкривши папку з встановленими бібліотеками і запускаєте пошук по * .pas файлів і з ключовим словом. Крім того, ви можете відкрити відповідний за змістом модуль і вивчити його секцію interface.
- Аналогічно чините і з Delphi - відкриваєте довідку і запускаєте там пошук. Альтернативно, ви можете запускати пошук online по web-довідці (наприклад). Або ж відкриваєте папку з вихідними кодами Delphi (наприклад, C: \ Program Files \ Borland \ Delphi 7 \ source \ або C: \ Program Files (x86) \ Embarcadero \ RAD Studio \ 8.0 \ source \) і шукаєте * .pas файли з ключовим словом.
- Для пошуку інформації по системних функцій ви можете шукати інформацію в MSDN Library (MSDN - Microsoft Developer Network) - інформаційний сервіс для розробників програмного забезпечення (приклад пошуку). Це - перше місце, де потрібно шукати інформацію по системних функцій. MSDN можна встановити локально (по платній підписці), але та його частина, що стосується опису функцій, доступна безкоштовно - він називається Windows SDK (стара назва: Platform SDK) і може бути завантажений тут (див. Також розділ завантажень). Зазвичай має сенс брати останню версію. Microsoft Windows SDK - це набір утиліт, прикладів коду, документації, компіляторів, заголовних файлів і бібліотек, необхідних для розробки програм під Microsoft Windows. Windows SDK комбінує і замінює колишні Platform SDK і .NET Framework SDK. Крім Windows SDK є SDK (SDK = Software Development Kit - набір для розробників програм) і "за окремими напрямами": наприклад, DirectX SDK, DirectShow SDK, Windows Media SDK, CAPICOM SDK, Visual Studio SDK і т.п. Склад і розподіл SDK іноді змінюється. Наприклад, DirectShow SDK зараз входить до складу Windows SDK. Звичайно ж, якщо вас цікавить тільки документація, то вона доступна і online.
- документація
- локальна довідка
- Довідка сторонніх бібліотек
- Довідка Delphi
- приклади програм
- Online
- docwiki.embarcadero.com
- msdn.microsoft.com
- Інші ресурси і статті
- локальна довідка
- Вихідні тексти
- * .pas файли
- Ваші
- сторонніх бібліотек
- Delphi
- * .h, * .c, * .cpp файли
- З комплекту Delphi (наприклад: C: \ Program Files (x86) \ Embarcadero \ RAD Studio \ 8.0 \ include \)
- Platform SDK або локальний MSDN.
- * .pas файли
Ну, де шукати - ми вже зрозуміли. Залишається питання - що і як шукати?
Звичайно, вам потрібно шукати за ключовими словами. Якщо ви знаєте ім'я функції і хочете дізнатися про неї, то ім'я функції і буде ключовим словом. Якщо ви не знаєте, яка функція вам потрібна, то вам потрібно вибрати одне або кілька слів, які характеризують те, що ви хочете зробити.
Функція не відома
Якщо ви ще не знаєте, яка функція вам потрібна, то проводите пошук по загальній області застосування функції. Наприклад, якщо ви хочете дізнатися положення покажчика миші, то запустіть пошук по mouse functions або cursor functions. Ви також можете провести пошук за призначенням функції, наприклад: get mouse position або get cursor position.
Примітка по MSDN: на жаль, з виходом Windows Phone 8 і Windows 8, Microsoft уніфікує вигляд своїх сайтів до стилю Metro. Це спрощений, мінімалістський, плоский стиль. Старий вид (classic) вже зараз важко включити і скоро він стане більш не доступний.
Що ще гірше - якщо ви переглядаєте статтю, яка є тільки англійською (тобто практично всі), але мова UI у вас український (що теж майже завжди), то тема взагалі не здасться в дереві тим, оскільки немає українського дерева тим для англомовних статей. На щастя, саме цю проблему легко вирішити - просто переключивши мову в англійський (знизу сайту MSDN є пункт вибору мови). Тоді здасться англійське дерево тим, і наша тема буде показана в ній. Але проблеми з навігацією це не виправить.

У цій частині я розповів, як ви самостійно можете шукати необхідну інформацію. Розповів про двох сайтах (docwiki.embarcadero.com і msdn.microsoft.com), а також способи пошуку. Плюс привів список книг. Сподіваюся, тепер з цим проблем у вас не виникне. Що робити з Найдьонов інформацією - це тема наступних частин в серії.
У наступній частині я розповім, як підключати системні функції в свої програми.
>>> Як ви розумієте, у Microsoft, Embarcadero (та й будь-який інший компанії) немає можливості переводити тонни технічної документації на 100+ мов світу.
У Adobe довідка по Action Script 3.0 (і не тільки), завжди на багатьох мовах.
У тому числі і російською.
Переклад - відмінний.
У Adobe довідка по Action Script 3.0 (і не тільки), завжди на багатьох мовах.
У тому числі і російською.
Переклад - відмінний.
Там трохи поменше документації.
Олександр! А продовження буде ?!
Буде. Проблема як зазвичай у вільному часу.
З приводу Microsoft, особисто у мене складається враження що вони всіляко намагаються ускладнити життя простому програмістові. Іноді навіть найпростіші функції вимагають вивчення величезного томи, з якою небудь черговий їх технологією, щоб хоч як то приблизно зрозуміти як її запустити.
І на жаль в документації дуже часто немає того що тобі потрібно.
(Приклад: MSXML DOMDOCUMENT спробуйте створити XML файл з рядком. (Саме створити, а не прочитати з файлу). В документації я нічого не знайшов. Зате на форумах пропонують використовувати інтерфейс SAX для запису таких файлів.)
І на жаль таких прикладів дуже багато.
Величезна кількість технологій, і все з негласними обмеженнями опису яких в доці годі й шукати.
заголовна рядок XML
(Менше)? x m l v e r s i o n = "1. 0" e n c o d i n g = "w i n d o w s - 1 2 5 1"? (більше)
- форум теги глушить.
Можна використовувати деякі HTML-теги, наприклад:
Будь ласка, по можливості використовуйте "Ім'я / URL" замість "Анонімний". URL можна просто не вказувати.
Ваше повідомлення може бути позначено як спам спам-фільтром - не хвилюйтеся, воно з'явиться після перевірки адміністратором.