Image
7.6.2016 0 Comments

ASSEMBLER pod Windows: Klávesnica a myš III. (18. časť)

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

V tejto časti dokončíme opis funkcií pre klávesnicu a myš, ktorým sme sa venovali v predchádzajúcich dvoch častiach.  

SetCapture

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia SetCapture nastavuje uväznenie myši v danom okne, ktoré prislúcha aktuálnemu vláknu (threadu). Keď je myš v okne uväznená, každý vstup od myši je smerovaný k tomuto oknu bez ohľadu na to, či je kurzor vnútri ohraničenia tohto okna. Myš môže byť uväznená iba v jednom okne. Ak je kurzor myši nad oknom vytvoreným iným vláknom (threadom), systém bude smerovať vstup od myši k tomuto oknu iba vtedy, ak je stlačené tlačidlo myši.

Syntax: HWND SetCapture, HWND hWnd

HWND hWnd: Handle okna, ktoré uväzní myš.

Výsledok funkcie: BOOL: Po úspešnom vykonaní funkcie sa vráti handle okna, v ktorom bola myš predtým uväznená. Pokiaľ nijaké takéto okno neexistuje, návratová hodnota je NULL.

 

GetDoubleClickTime

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia vyhľadáva aktuálnu dobu dvojitého kliknutia myši. Dvojité kliknutie je séria dvoch kliknutí tlačidla myši, keď k tomu druhému dochádza v priebehu špecifikovanej doby po prvom kliknutí. Doba dvojitého kliknutia je maximálny počet milisekúnd, ktoré sa môžu vyskytnúť medzi prvým a druhým kliknutím dvojitého kliknutia. Funkciu používajte pred volaním funkcie SetDoubleClickTime na vyhľadanie aktuálnej hodnoty doby dvojitého kliknutia predtým, než ju zmeníte. Táto funkcia nemá nijaké vstupné parametre.

Syntax: UINT GetDoubleClickTime(VOID)

Výsledok funkcie: UINT: Po úspešnom vykonaní funkcie sa vráti aktuálna doba dvojitého kliknutia v milisekundách.

 

SetCaretBlinkTime

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia SetCaretBlinkTime nastavuje čas v milisekundách medzi zobrazeniami vynechávky. Keďže vynechávka je zdieľaným zdrojom medzi všetkými aplikáciami, zmena doby blikania v jednej aplikácii ovplyvní dobu blikania vo všetkých ostatných programoch, ktoré v tej chvíli bežia a používajú vynechávku.

Syntax: BOOL SetCaretBlinkTime, UINT uMSeconds

UINT uMSeconds: Nová doba blikania v milisekundách.

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

 

SetCaretPos

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia premiestňuje vynechávku na špecifikované súradnice. Keby bolo okno, ktorému vynechávka patrí, vytvorené so štýlom triedy CS_OWNDC, potom špecifikované súradnice podliehajú mapovaciemu režimu, asociovanému s týmto oknom. Toto je základná funkcia na premiestňovanie  vynechávky v klientskej oblasti okna. Danému oknu môže v ľubovoľnom čase patriť maximálne jedna vynechávka. Na vytvorenie vynechávky použite funkciu CreateCaret.

 

Syntax: BOOL SetCaretPos, int X, int Y

int X: Nová súradnica x vynechávky.

int Y: Nová súradnica y vynechávky.

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

 

SetCursor

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia SetCursor sa používa na zmenu tvaru kurzora. Funkcia sa bežne využíva pri spracovaní správ WM_SETCURSOR alebo WM_MOUSEMOVE, je rýchla, ak bol kurzor už predtým použitý, takže ju možno volať opakovane, aby zmenila tvar kurzora, bez spomalenia programu. Tvary kurzora musia byť najprv zavedené do systému funkciou LoadCursor. Použitie funkcie SetCursor v medziach okna, ktoré má definíciu kurzora, spôsobuje, že tvar kurzora kmitá. Je to preto, že Windows prepína tam a späť medzi kurzorom triedy a kurzorom zavedeným pomocou funkcie SetCursor vždy, keď je poslaná správa WM_MOUSEMOVE. Aby ste tomuto problému zabránili, nastavte kurzor triedy na NULL.

Syntax: HCURSOR SetCursor, HCURSOR hCursor

HCURSOR hCursor: Handle kurzora, ktorý chcete zobraziť. Na získanie tohto handle použite funkciu LoadCursor.

Výsledok funkcie: HCURSOR: Po úspešnom vykonaní funkcie návratová hodnota je handle k predchádzajúcemu tvaru kurzora. Ak nijaký kurzor neexistoval, vráti sa hodnota NULL.

 

SetCursorPos

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia SetCursorPos premiestňuje kurzor na špecifikované súradnice obrazovky. Ak súradnice nie sú vnútri pravouholníka nastaveného posledným volaním funkcie ClipCursor, Windows súradnice upraví tak, aby kurzor zostal vnútri tohto pravouholníka. Funkciu SetCursorPos by bolo možné použiť na poskytnutie klávesnicovej podpory pre pohyby myši, napr. klávesy so šípkami by mohli pohybovať kurzorom myši.

Syntax: BOOL SetCursorPos, int X, int Y

int X: Nová súradnica x kurzora v súradniciach obrazovky.

int Y: Nová súradnica y kurzora v súradniciach obrazovky.

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

 

SetDoubleClickTime

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia nastavuje dobu dvojitého kliknutia myši. Doba dvojitého kliknutia je maximálny počet milisekúnd, ktoré môžu uplynúť medzi prvým a druhým kliknutím dvojitého kliknutia.

Syntax: BOOL SetDoubleClickTime, UINT uInterval

UINT uInterval: Počet milisekúnd, ktoré môžu uplynúť medzi prvým a druhým kliknutím dvojitého kliknutia. Keď je tento parameter nastavený na nulu, Windows použije východiskovú dobu dvojitého kliknutia, 500 milisekúnd.

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

 

ShowCaret

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia sa používa na zviditeľnenie vynechávky na obrazovke na aktuálnej pozícii vynechávky. Keď je vynechávka zviditeľnená, začne automaticky blikať. Používateľovi pomáha, keď je vynechávka skrytá počas spracúvania správy WM_PAINT alebo pri vykonávaní operácií, ktoré odoberajú z klientskej oblasti zvýraznenie aktivít. Keď sa používateľ vráti do pracovnej oblasti, vynechávku je možné  pomocou tejto funkcie opäť zviditeľniť. Vynechávku zdieľajú všetky aplikácie. Ak je vynechávka zobrazená v okne jedného programu, vynechávka v okne iného programu zmizne.

Syntax: BOOL ShowCaret, HWND hWnd

HWND hWnd: Handle okna, ktorému vynechávka patrí. Keď je tento parameter NULL, funkcia ShowCaret vyhľadá v aktuálnej úlohe okno, ktoré vynechávku zobrazovalo naposledy.

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

 

ShowCursor

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia ShowCursor zobrazuje alebo skrýva kurzor myši.

Syntax: int ShowCursor, BOOL bShow

BOOL bShow: Ak je parameter bShow TRUE, počet zobrazení kurzora sa zvýši o jednu. Ak je tento parameter FALSE, počet zobrazení kurzora sa zníži o jednu.

Výsledok funkcie: BOOL: Po úspešnom vykonaní funkcie sa vráti nový čítač zobrazení.

 

SwapMouseButton

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia prevráti alebo obnovuje význam ľavého a pravého tlačidla myši. Volanie tejto funkcie zmení orientáciu myši iba počas trvania seansy Windows.

Syntax: BOOL SwapMouseButton, BOOL fSwap

BOOL fSwap: Keď je tento parameter nastavený na TRUE, ľavé tlačidlo generuje správy pravého tlačidla a pravé tlačidlo generuje správy ľavého tlačidla. Ak je parameter fSwap nastavený na FALSE, sú obnovené pôvodné významy týchto tlačidiel.

Výsledok funkcie: BOOL: Pokiaľ boli tlačidlá myši prevrátené pred volaním tejto funkcie, vrátenou hodnotou je TRUE, inak sa vráti hodnota FALSE.

 

GetAsyncKeyState

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia zistí, či je práve stlačený kláves alebo či bol stlačený po poslednom volaní GetAsyncKeyState. Táto funkcia je užitočná hlavne pre aplikácie, ktoré používajú Shift, Alt, Ctrl alebo funkčné klávesy, aby zmenili určitú operáciu. GetAsyncKeyState napríklad dokáže zistiť, či používateľ pred výberom položky myšou stlačil funkčný kláves.

Syntax: SHORT GetAsyncKeyState, int vKey

int vKey: Kód jedného z 256 možných virtuálnych klávesov.

Výsledok funkcie: Ak je kláves práve stlačený, vyšší bajt je 1, pokiaľ nie, potom je 0. V prípade, že bol kláves stlačený od posledného volania funkcie GetAsyncKeyState, nižší bajt je 1, inak 0. Na načítanie týchto hodnôt používajte makrá HIGH a LOW.

 

GetInputState

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia GetInputState zisťuje, či sú vo fronte pre správy volajúceho vlákna (threadu) správy tlačidiel myši alebo klávesnice. Funkcia sa používa v zdĺhavých operáciách na kontrolu, či používateľ stlačil kláves alebo tlačidlo myši. To môže indikovať, že používateľ chce operáciu zrušiť. Táto funkcia nemá žiadne vstupné parametre.

Syntax: BOOL GetInputState(VOID)

Výsledok funkcie: BOOL: Ak front správ obsahuje jednu alebo viacej nových správ tlačidiel myši alebo klávesnice, vrátenou hodnotou je TRUE, inak sa vráti hodnota FALSE.

 

GetKeyNameText

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia vyhľadáva reťazec, ktorý reprezentuje názov klávesu. Táto funkcia sa používa pri spracúvaní správ WM_KEYDOWN a WM_KEYUP. Parameter lParam je odovzdaný funkcii GetKeyNameText, následne funkcia umiestni popis klávesu do znakovej vyrovnávacej pamäte, na ktorú ukazuje lpString.

Syntax: int GetKeyNameText, LONG lParam, LPTSTR lpString,  int nSize

LONG lParam: Druhý parameter správy klávesnice (napr. WM_KEYDOWN), ktorý sa má spracovať. Funkcia interpretuje lParam takto: bity 16 až 23 – Scan Code, bit 24 – príznak rozšírených klávesov. Odlišuje niektoré klávesy na rozšírenej klávesnici. Bit 25 – nastavením tohto bitu indikujete, že táto funkcia nemá rozlišovať medzi ľavými a pravými klávesmi Ctrl a Shift.

LPTSTR lpString: Ukazovateľ na vyrovnávaciu pamäť, ktorá bude obsahovať názov klávesu.

int nSize: Maximálna dĺžka názvu klávesu v znakoch okrem ukončujúceho znaku NULL.

Výsledok funkcie: Ak bola funkcia úspešná, do vyrovnávacej pamäte sa skopíruje nulou zakončený reťazec a návratovou hodnotou je dĺžka tohto reťazca v znakoch okrem ukončujúceho znaku NULL.

 

GetKeyState

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia vyhľadáva stav špecifikovaného virtuálneho klávesu. Tento stav vyjadruje, či je kláves uvoľnený, stlačený alebo prepnutý. Funkcia sa bežne používa na zistenie stavu prepínaných klávesov: Caps Lock, Scroll Lock a Num Lock.

Syntax: SHORT GetKeyState, int nVirtKey

int nVirtKey: Kód virtuálneho klávesu.

Výsledok funkcie: SHORT: Stav klávesu je zakódovaný v dvoch bitoch. Ak je vyšší bit 1, kláves je stlačený, v opačnom prípade je uvoľnený. Keď je nižší bit 1, kláves je prepnutý.

 

VkKeyScan

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia prekladá znaky na korešpondujúce kódy virtuálnych klávesov. Funkciu VkKeyScan používajte na posielanie správ WM_KEYDOWN a WM_KEYUP ostatným oknám. Môže to byť účinný spôsob odovzdávania informácií medzi oknami, pokiaľ má prijímajúce okno vo svojej funkcii WndProc už logiku pre vstup z klávesnice.

Syntax: SHORT VkKeyScan, TCHAR ch

TCHAR ch: Znak, ktorý sa má preložiť na kód virtuálneho klávesu.

Výsledok funkcie: SHORT: Ak funkcia prebehne úspešne, nižší bajt návratovej hodnoty obsahuje kód virtuálneho klávesu a vyšší bajt obsahuje stav preraďovača, ktorý môže byť kombináciou nasledujúcich bitových príznakov: bit 1 – je stlačený jeden z klávesov Shift, bit 2 – je stlačený jeden z klávesov Ctrl, bit 3 – je stlačený jeden z klávesov Alt. Pokiaľ funkcia nenájde žiadny kláves, ktorý sa prekladá na odovzdaný kód znaku, nižší aj vyšší bajt obsahujú hodnotu -1.

 

VkKeyScanEx

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Nie

user32.lib

user32.inc

Funkcia je rovnaká ako VkKeyScan s výnimkou toho, že funkcia VkKeyScanEx prekladá znak s použitím vstupného jazyka a fyzického rozloženia klávesnice, ktoré je identifikované daným handle rozloženia klávesnice.

Syntax: SHORT VkKeyScanEx, CHAR ch, HKL dwhkl  

CHAR ch: Znak, ktorý sa má preložiť na kód virtuálneho klávesu.

HKL dwhkl: Rozloženie klávesnice, ktoré sa má použiť na preklad znaku. Tento parameter získate pomocou funkcie LoadKeyboardLayout.

Výsledok funkcie: Výsledok funkcie je rovnaký ako pri funkcii VkKeyScan.

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á