Image
7.6.2016 0 Comments

ASSEMBLER pod Windows: Klávesnica a myš II – Kurzor (17. časť)

Späť na úvod >> Späť na programovanie >> Späť na seriál

ClipCursor

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia umožní uväzniť kurzor myši v pravouhlej oblasti na obrazovke. Ak nasledujúca pozícia kurzora (nastavená pomocou funkcie SetCursorPos alebo myšou) leží vnútri tohto pravouholníka, Windows pozíciu automaticky upraví tak, aby kurzor uchoval vnútri pravouholníkovej oblasti. Kurzor je zdieľaným prostriedkom. Ak aplikácia kurzor uväzní pomocou funkcie ClipCursor, musí pred odovzdaním riadenia inej aplikácii kurzor uvoľniť volaním tej istej funkcie s parametrom NULL.

Syntax: BOOL ClipCursor, CONST RECT *lpRect

CONST RECT *lpRect: Ukazovateľ na štruktúru RECT, obsahujúcu obrazovkové súradnice ľavého horného a pravého dolného rohu obmedzujúceho pravouholníka. Pokiaľ je tento parameter NULL, kurzor je uvoľnený a možno ho presunúť na ktorékoľvek miesto na obrazovke. Štruktúra RECT má tvar:

RECT STRUCT

  left    dd ?

  top     dd ?

  right   dd ?

  bottom  dd ?

RECT ENDS

Použitie v Assembleri je pomerne jednoduché. Najprv si štruktúru zadefinujeme pomocou príkazu LOCAL rect:RECT. Štruktúru naplníte pomocou príkazov mov rect.left, hodnota; mov rect.top, hodnota atď. Vo funkcii ClipCursor ju použijete takto: invoke ClipCursor,ADDR rect.

Výsledok funkcie: BOOL: Po úspešnom vykonaní funkcie sa vráti hodnota TRUE, inak FALSE.

 

CopyCursor

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia kopíruje kurzor. Táto funkcia umožňuje, aby aplikácia alebo dynamická knižnica DLL získala kópiu tvaru kurzora, ktorý patrí inému modulu. Keď je tento modul uvoľnený z pamäte, aplikácia je naďalej schopná používať tento tvar kurzora. Funkcia CopyCursor je vlastne makro, ktoré volá funkciu CopyIcon. V Assembleri nie je zatiaľ makro CopyCursor definované, takže musíte priamo použiť funkciu CopyIcon.

Syntax: HCURSOR CopyCursor, HCURSOR pcur

HCURSOR pcur: Kurzor, ktorý sa má kopírovať.

Výsledok funkcie: BOOL: Po úspešnom vykonaní funkcie sa vráti handle kópie kurzora, v opačnom prípade sa vráti hodnota NULL.

 

CreateCaret

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

V textových editoroch sa pri písaní textu stretnete s kurzorom, ktorý vám zobrazuje aktuálnu pozíciu, v texte. Pretože slovom kurzor sa vo Window označuje skôr bitový obraz reprezentujúci polohu myši, budeme tento tzv. kurzor nazývať caret alebo v preklade vynechávka (pozri obrázok 1).

Funkcia CreateCaret vytvára nový tvar vynechávky a priraďuje jej vlastníctvo danému oknu. Tvarom vynechávky môže byť čiara, blok alebo bitová mapa. Pre ľubovoľné okno môže v danom čase existovať iba jedna vynechávka. Táto funkcia sa používa spolu s funkciami SetCaretPos a ShowCaret.

Syntax: BOOL CreateCaret, HWND hWnd, HBITMAP hBitmap, int nWidth, int nHeight

HWND hWnd: Handle okna, pre ktoré vytvárame vynechávku.

HBITMAP hBitmap: Handle k bitovej mape, definujúcej tvar vynechávky. Pokiaľ je nastavený na NULL, je vytvorená čierna vynechávka. V prípade, že je nastavený na 1, je vytvorená sivá vynechávka. Handle bitovej mapy musí byť vytvorený funkciou CreateBitmap, CreateDIBitmap alebo LoadBitmap.

int nWidth: Šírka vynechávky v logických jednotkách. Ak je tento parameter nula, šírka sa nastaví na šírku ohraničenia okna definovanú systémom. V prípade, že je hBitmap handle bitovej mapy, tento parameter je ignorovaný.

int nHeight: Výška vynechávky v logických jednotkách. Ak je tento parameter nula, výška sa nastaví na výšku ohraničenia okna definovanú systémom. V prípade, že je hBitmap handle bitovej mapy, tento parameter je ignorovaný.

Správy: WM_SETFOCUS, WM_KILLFOCUS

Výsledok funkcie: BOOL: Po úspešnom vykonaní funkcie sa vráti hodnota TRUE, inak FALSE.

 

CreateCursor

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia sa používa na vytvorenie kurzora myši, ktorý má špecifikovanú veľkosť, bitový vzor a aktívny bod. Tvar kurzora je riadený dvoma pamäťovými oblasťami, ktoré obsahujú masky pre kurzor. Bity v týchto pamäťových blokoch sú porovnávané s bodmi na obrazovke pomocou logickej operácie AND a exkluzívnej logickej operácie OR (pozri tabuľku 1). Kurzor je možné prinútiť, aby sa menil podľa toho, kde je na obrazovke alebo aká akcia sa odohráva.

Hodnota bitovej masky AND

Hodnota bitovej masky XOR

Výsledok na obrazovke

Tab. 1

0

0

Čierna farba

0

1

Biela farba

1

0

Transparentná (priehľadná) farba

1

1

Invertovaná farba

Syntax: HCURSOR CreateCursor, HINSTANCE hInst,   int xHotSpot, int yHotSpot, int nWidth, int nHeight, CONST VOID *pvANDPlane, CONST VOID *pvXORPlane

HINSTANCE hInst: Handle inštancie aplikácie vytvárajúcej kurzor.

int xHotSpot: Horizontálna pozícia aktívneho bodu kurzora v bodoch.

int yHotSpot: Vertikálna pozícia aktívneho bodu kurzora v bodoch.

int nWidth: Šírka kurzora v bodoch.

int nHeight: Výška kurzora v bodoch.

CONST VOID *pvANDPlane: Ukazovateľ na pole bajtov, ktoré obsahuje bitové hodnoty pre bitovú masku kurzora AND v monochromatickej bitovej mapy závislej od zariadenia.

CONST VOID *pvXORPlane: Ukazovateľ na pole bajtov, ktoré obsahuje bitové hodnoty pre bitovú masku kurzora XOR v monochromatickej bitovej mapy závislej od zariadenia.

Výsledok funkcie: HCURSOR: Po úspešnom vykonaní funkcie návratová hodnota identifikuje kurzor, v opačnom prípade sa vráti hodnota NULL.

 

DestroyCaret

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia ruší aktuálny tvar vynechávky, uvoľňuje vynechávku z okna a odstraňuje vynechávku z obrazovky. Ak je tvar vynechávky bitová mapa, funkcia DestroyCaret túto bitovú mapu neuvoľní. K dočasnému skrytiu, resp. zobrazeniu vynechávky používajte funkcie HideCaret a ShowCaret. Funkcia DestroyCaret nemá žiadne vstupné parametre.

Syntax: BOOL DestroyCaret(VOID)

Správy: WM_SETFOCUS, WM_KILLFOCUS

Výsledok funkcie: BOOL: Po úspešnom vykonaní funkcie sa vráti hodnota TRUE, inak FALSE.

 

DestroyCursor

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia ruší kurzor vytvorený funkciou CreateCursor a takisto uvoľňuje pamäť, ktorú kurzor obsadzoval. POZOR: Túto funkciu nepoužívajte na rušenie kurzora, ktorý nebol vytvorený funkciou CreateCursor.

Syntax: BOOL DestroyCursor, HCURSOR hCursor

HCURSOR hCursor: Kurzor, ktorý sa má rušiť. Kurzor nesmie byť práve používaný.

Výsledok funkcie: BOOL: Po úspešnom vykonaní funkcie sa vráti hodnota TRUE, pokiaľ bol korzor zrušený, v opačnom prípade sa vráti hodnota FALSE.

 

GetCapture

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

GetCapture vyhľadáva handle okna, ktoré uväznilo myš. Myš môže byť uväznená v ľubovoľne danom čase maximálne jedným oknom, toto okno prijíma vstup od myši, či už je kurzor v jeho ohraničení, alebo nie. Funkciu GetCapture používajte na vyhľadanie okna, v ktorom je myš uväznená, aby ste  mohli tomuto oknu poslať správu, aby myš uvoľnilo. Funkcia nemá nijaké vstupné parametre.

Syntax: HWND GetCapture(VOID)

Správy: WM_MOUSEMOVE

Výsledok funkcie: HWND: Vráti handle uväzňujúceho okna, asociovaného s aktuálnym vláknom (threadom). V prípade, že žiadne okno vo vlákne myš neuväznilo, vrátenou hodnotou je NULL.

 

GetCaretBlinkTime

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

GetCaretBlinkTime vráti uplynulý čas medzi bliknutiami vynechávky v milisekundách. Tento čas je vrátený, aj keď vynechávka nie je viditeľná. Táto funkcia nepožaduje nijaké vstupné parametre.

Syntax: UINT GetCaretBlinkTime(VOID)

Výsledok funkcie: UINT: Vráti čas bliknutia v milisekundách.

 

GetCaretPos

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia kopíruje pozíciu vynechávky v klientských súradniciach do štruktúry POINT, na ktorú ukazuje lpPoint. Aplikácia by mala pre použitím GetCaretPos použiť funkciu ShowCaret. Pozícia vynechávky je vždy v klientskych súradniciach okna, ktoré vynechávku obsahuje.

Syntax: BOOL GetCaretPos, LPPOINT lpPoint

LPPOINT lpPoint: Ukazovateľ na štruktúru POINT, ktorá prijme klientske súradnice vynechávky.

Výsledok funkcie: BOOL: Po úspešnom vykonaní funkcie sa vráti hodnota TRUE, v opačnom prípade sa vráti hodnota FALSE.

 

GetClipCursor

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia GetClipCursor vyhľadáva obrazovkové súradnice pravouholníkovej oblasti, v ktorej je uväznený kurzor. Kurzor je zdieľaným prostriedkom medzi všetkými aplikáciami, ktoré v systéme bežia. Obmedzenie kurzora na určitú oblasť na obrazovke funkciou ClipCursor porušuje princíp návrhu Windows umožniť programom správať sa nezávisle a mali by ste sa mu vyhýbať. 

Syntax: BOOL GetClipCursor, LPRECT lpRect

LPRECT lpRect: Ukazovateľ na štruktúru RECT, ktorá prijíma obrazovkové súradnice uväzňujúceho pravouholníka. Ak kurzor nie je uväznený v pravouholníku, sú načítané rozmery obrazovky.

Výsledok funkcie: BOOL: Po úspešnom vykonaní funkcie sa vráti hodnota TRUE, v opačnom prípade sa vráti hodnota FALSE.

 

GetCursor

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

GetCursor vyhľadáva handle aktuálneho kurzora myši. Funkcia nemá nijaké vstupné parametre.

Syntax: HCURSOR GetCursor (VOID)

Výsledok funkcie: HCURSOR: Po úspešnom vykonaní funkcie je návratovou hodnotou handle aktuálneho kurzora. Ak kurzor neexistuje, vrátenou hodnotou je NULL.

 

GetCursorPos

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia GetCursorPos vyhľadáva pozíciu kurzora v súradniciach obrazovky. Aplikácie túto funkciu používajú na zistenie aktuálnej pozície kurzora myši.

Syntax: BOOL GetCursorPos, LPPOINT lpPoint

LPPOINT lpPoint: Ukazovateľ na štruktúru POINT, ktorá dostane obrazovkové súradnice kurzora.

Výsledok funkcie: BOOL: Po úspešnom vykonaní funkcie sa vráti hodnota TRUE, inak FALSE.

 

HideCaret

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

HideCaret sa používa na odstránenie vynechávky z obrazovky. Skrytie vynechávky nezlikviduje jej súčasný tvar ani neznehodnotí aktívnu pozíciu. Skrytie vynechávky pomáha používateľovi pri vykonávaní operácií, ktoré odoberajú z klientskej oblasti zvýraznenie činnosti (výbery v menu a pod.) alebo v priebehu spracúvania správy WM_PAINT. Len čo je činnosť skončená, vynechávku je možné znovu zviditeľniť pomocou funkcie ShowCaret. Vynechávku zdieľajú všetky aplikácie. Pokiaľ sa vynechávka zobrazí v okne jedného programu, vynechávka v okne iného bežiaceho programu automaticky zmizne.

Syntax: BOOL HideCaret, HWND hWnd

HWND hWnd: Handle k oknu, ktorému vynechávka patrí. V prípade, že je NULL, funkcia HideCaret vyhľadáva v aktuálnej úlohe okno, ktorému vynechávka patrí.

Výsledok funkcie: BOOL: Po úspešnom vykonaní funkcie sa vráti hodnota TRUE, inak FALSE.

 

ReleaseCapture

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia uvoľňuje myš zo zajatia v okne a obnovuje normálne spracovanie vstupu od myši. Okno, v ktorom je myš uväznená, prijíma každý vstup od myši bez ohľadu na pozíciu kurzora, okrem stlačenia tlačidla myši, keď je v okne iného vlákna (threadu) aktívny bod kurzora. Táto funkcia nemá nijaké vstupné parametre.

Syntax: BOOL ReleaseCapture(VOID)

Výsledok funkcie: BOOL: Po úspešnom vykonaní funkcie sa vráti hodnota TRUE, v opačnom prípade sa vráti hodnota FALSE.

Použitie uvedených funkcií nájdete v príklade na stránke www.pcrevue.sk v sekcii Programujeme – Assembler pod Windows.

Literatúra

[1]  Simon, R. J. – Gouker, M. – Barnes, B. C.: Win32 API. Zväzok 1, 2, 3. UNIS publishing, Brno 1997.

[2]  Richter, J.: Windows pro pokročilé a experty. Computer Press, Praha 1997.

[3]  Petzold, Ch.: Programování ve Windows – Win32 API, Computer Press, Praha 1999.


Nechajte si posielať prehľad najdôležitejších správ emailom

Mohlo by Vás zaujímať

Ako na to

Ako zbaviť fotky hmly

08.12.2016 11:59

Hmla alebo dym sú často veľmi kreatívne nástroje. No všetkého veľa škodí. Fotka potom stráca kontrast a v podstate na nej nič nevidieť. Hmlu môžete neraz následnými úpravami odstrániť alebo zredukovať ...

Ako na to

Užitočné SW nástroje

08.12.2016 11:53

AllDup v4.0.3 Určenie: program na vyhľadávanie a odstraňovanie duplicitných súborov Vlastnosti: duplicitné súbory sa vyhľadávajú len na zvolených diskových jednotkách alebo len v rámci vybraných ...

Ako na to

Fotografovanie s bleskom

08.12.2016 11:47

Ak máte moderný fotoaparát so vstavaným alebo externým bleskom, zdá sa vám téma článku triviálna. Jednoducho nastavíte vhodný režim, vyberiete najlepšiu kompozíciu záberu, exponujete a o zvyšok sa už ...

Žiadne komentáre

Vyhľadávanie

Kyocera - prve-zariadenia-formatu-a4-s-vykonom-a3

Najnovšie videá