Jak už psal Ondřej Linhart, handle je unikátní (jedinečný) identifikátor něčeho. Ve Windows takřka všeho. Vezměme si jako příklad klasickou aplikaci s formulářem (neboli oknem). Při programování pomocí Windows API (tedy volání přímo funkcí Windows v knihovnách jako kernel32.dll, user.dll) se nejprve musí okno vytvoři zavoláním funkce CreateWindow, která má spoustu parametrů. Ta okno (formulář) vytvoří a vrátí handle (tedy identifikátor) tohoto okna. To je číslo, nad jehož hodnotou není potřeba nějak přemýšlet. Teď chci toto okno třeba zvětšit. Tak řeknu Windows (zavoláním příslušné funkce z Windows API), změň velikost okna. Ovšem oken (aplikací) je najednou otevřeno hodně, takže zároveň musím říct, které okno mají Windows zvětšit. A to sdělím pomocí handle, protože handle toto okno identifikuje. Odtud je doufám zřejmé, že každé okno má svůj vlastní jedinečný handle. Příklad číslo dvě: Chci si nakreslit na okno čáru. Když chci kreslit ve skutečnosti, musím mít tužku, pero atd. prostě psací nástroj. Ve Windows potřebuji taky pero (o určitém stylu čáry, barvě, tlouštce), aby Windows věděly, jak mají kreslit. Pero si tedy pomocí funkce CreatePen vytvořím. Toto vytvořené pero (řekněme tloušťka 1, styl čáry tečkovaná, barva červená) je opět identifikované pomocí svého jedinečného handle. Když potom řeknu Windows kresli čáru od bodu A do bodu B, řeknu zároveň pomocí jakého pera to mají kreslit. Pero identifikuju pomocí jeho handle. Při práci se soubory se také používá pro soubor handle. Chci do souboru zapsat? 1. Říct Windows, otevři soubor, je mi vrácen jeho handle. 2. Říct Windows, zapiš do souboru. Soubor identifikuju pomocí handle z bodu 1. 3. Říct Windows, zavři soubor. Soubor identifikuju pomocí handle z bodu 1. Atd. Takhle je to skoro při všem Ve Visual Basicu to není nutné řešit, protože Visual Basic nás od volání těchto funkcí z Windows API odděluje a umožňuje nám tak pohodlnější práci. Ovšem protože někdy je nutné nebo vhodné si něco pomocí Windows API zařídit sám, je nutné znát příslušný handle. A ten je pro Form obsažený v jeho vlastnosti hWnd. hWnd je zkratka handle window. Když budeš chtí u svého formuláře změnit velikost na 300 x 200, tak buď 1. Form1.Width = 300 Form1.Height = 200 2. pomocí funkce z Window API MoveWindow(Form1.hWnd, Form1.Left, Form2.Top, 300, 200, True) udělám to samé. Pomocí handle okna (vlastnost Form.hWnd) si to svoje okno identifikuju. Visual Basic v odrážce jedna vlastně odrážku 2 provede za mě. To je výhodné, protože práce čistě pomocí Window API je někdy zdlouhavá, náchylná na chyby a vůbec dost nepohodlná. Doufám, že teď už je to jasnější.
|