Nabídka portálu se při zobrazení článku přesouvá na konec pravého sloupce nabídek.
win32API - základy |
Autor: Libor Blaheta
| Zdroj:
| Vytvořeno: 1.3.2004
| Publikováno: 6.4.2004
| Čtenářů: 4862
| Unikátních: 4557
|
Vysvětlení tajemného pojmu win32API pro neznalé.
win32API - základy
Pokud už programujete delší dobu, určitě nepíšete kód programu stylem od shora dolů, ale píšete si
vlastní univerzální funkce a procedury, které si pak ve svých programech voláte.
Operační systém Microsoft Windows nefunguje jinak - není to nic jiného než obrovský program (zdrojový kód má více jak 30 miliónů řádek).
Vývojáři OS Windows naprogramovali také spousta užitečných funkcí a procedur, a protože jsou hodní :-), tak nám je dali k dispozici, k vlastnímu užití.
Tyto užitečné funkce jsou uložené v DLL knihovnách. Mezi nejznámější patří:
- kernel32.dll - obsahuje funkce pro práci s procesy, vlákny, pamětí
- user32.dll - obsahuje funkce pro práci s okny
- gdi32.dll - obsahuje funkce pro práci s grafikou
a spousta dalších.
Takže zkratka win32API znamená:
- win32
- Windows 32-bit
- API
- Application Programmer Interface (aplikační rozhraní)
Je to vlastně soubor všech těch užitečných procedur a funkcí, které nám Windows dovolojí volat.
pozn. v textu dál budu používat pro zkrácení jen API místo win32API)
Možná se teď ptáte, proč vůbec volat/používat API ve svých programech.
Důvodů je hned několik. VB je programovací nástroj pro začátečníky a mnoho věcí v něm nejde bez znalosti API vůbec naprogramovat. Jednoduše řečeno VB nemá na spoustu věcí vlastní příkazy, a proto musíte šáhnout k API.
Hned dám "praktický" příklad. Chcete třeba udělat program, který bude zobrazovat aktuální souřadnice kurzoru. Na to VB nemá žádnou funkci.
Naštěstí existuje API, která vám souřadnice zjistí. Tato funkce se jmenuje GetCursorPos.
Před tím, než tuto funkci budeme moci zavolat, musíme ji deklarovat.
VB totiž vůbec neví, co to GetCursorPos je, a proto mu musíme nějakým způsobem "říct", že GetCursorPos je API z té a té DLL a že má tyhle a tyhle parametry.
Deklarace GetCursorPos vypadá takto:
Private Declare Function GetCursorPos Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) As Long
Rozebereme si jednotlivé položky:
- Private - privátní deklarace (má stejný význam jako u proměnných)
- Declare - určuje deklaraci API
- Function - je to funkce (u procedur se používá Sub)
- GetCursorPos - název API
- Lib "user32" - v jaké DLL knihovně se API nachází
- Alias "GetCursorPos" - pokud je název API schodný s klíčovým slovem VB, musíme definovat její alias, aby nedošlo ke kolizi jmen
- (...) - argumenty dané API
- As Long - typ návratové hodnoty
pozn. deklarace API se nemusíte učit nazpaměť. Jednotlivé deklarace naleznete v souboru win32api.txt, který je v adresáři, kde máte nainstalovaný VB.
Už víme, jak daná API vypadá. Deklaraci API dáváme do deklarační sekce modulu (tedy tam, kde asi máte Option Explicit a deklarace proměnných). Teď už VB ví, že GetCursorPos je API a můžeme ji tedy zavolat. Pokud si důkladně prohlédnete argumenty GetCursorPos, tak vidíte, že přijíma strukturu POINTAPI.
Tato struktura vypadá takto:
Private Type POINTAPI
x As Long
y As Long
End Type
pozn. deklaraci této struktury také naleznete v souboru win32api.txt.
Není na ní nic zvláštního. Umístěte ji také do deklarační sekce modulu, kde máte deklarovanou API GetCursorPos. Teď už nám opravdu nic nestojí v cestě a můžeme API zavolat.
Protože GetCursorPos přijíma strukturu, tak ji nejdříve deklarujeme, a pak API zavoláme.
Kód:
Dim tPos as POINTAPI
GetCursorPos tPos
Hotovo. VB zavolá GetCursorPos a ta nám uloží do struktury tPos x-ovou a y-ovou pozici kurzoru.
A to je vše. Není v tom žádná věda. Jenom využijete toho, co už udělal někdo jiný - win32API.
Než se pustíte do zkoumání funkcí API, je dobré mít tyto programy a helpy:
mnoho informací také naleznete v knize 1001 tipů a triků pro Visual Basic.
Toť je vše. Vaše cesta za poznáváním win32Api teď začíná...
Libor BlahetaL@atlas.cz
|