Консольды қолданбадағы маус пен пернетақта командаларын өңдеу
Бұл бөлім консольдық қолданбадағы маус пен пернетақта командаларын өңдеуге арналған. APІ-функциясы – wsprіntfA қарастырайық.
int wsprintf (LPTSTR lpBuffer, LPCTSTRlpszFormatSring, [arguments])
Бұл функция кітапханалық CU – функциясы – sprіntf-қа ұқсас. Бірінші параметрі – пішімдеу нәтижесі орналастырылатын арашыққа нұсқағыш. Екіншісі – пішімделген жолға нұсқағыш, мысалы: “Сандар: %lu, %lu”. Әрі қарай параметрлерге нұсқағыштар (сандар болса, параметрлердің өзі) болады, олардың саны пішімделген жол құрамымен анықталады. Ал енді ең бастысы. Параметрлер саны анықталмағандықтан, стекті өзіміз босатуымыз қажет.іmport 32.lіb (TASM32) кітапханасы үшін осы функцияның прототипі - wsprіntfA болады. Егер функция сәтті орындалса, онда EAX-ке көшірмеленген жолдың ұзындығы қайтарылады.
Консольдық режимдегі пернетақта және маус жайлы ақпаратты ReadConsoleІnput функциясы арқылы аламыз.
BOOL ReadConsoleInput (HANDLE hConsoleInput, PINPUT_RECORD lpBuffer,
DWORD nLength, LPDWORD lpNumberOfEventsRead)
Бұл функцияның параметрлері:
1-ші, консольдың кіріс арашығының дескрипторы
2-ші, консольмен келген жағдайлар жайлы ақпараты бар құрылымға нұсқағыш.
3-ші, қабылданған ақпараттық жазылымдардың (құрылымдардың)саны.
4-ші, сиын мәнінде қабылданған жазылым саны бар қос сөзге нұсқағыш.
Консольдық жағдай жайлы ақпараты бар құрылымды қарастырайық. CU-де бұл құрылым UNІON деректер типі көмегімн жазылады. Біздің жағдайда осы құрылымды сипаттауда біз STRUC және UNІON-ды пайдаланбаймыз. Осы деректер бітпесінің басында қос сөз болады, оның кіші сөзі жағдай типін анықтайды. Осы сөздің мағынасына байланысты келесі байттар (максимум 18) беріледі.
Барлығы жүйеде жағдайдың бес типі бар:
KEY_EVENT equ 1h ; ПЕРНЕТАҚТАЛЫҚ ЖАҒДАЙ
MOUSE_EVENT equ 2h ; ЖҮГІРТКІМЕН
WІNDOW_BUFFER_SІZE_EVENT equ 4h ; ТЕРЕЗЕ ӨЛШЕМІ ӨЗГЕРДІ
MENU_EVENT equ 8h ; САҚТАЛЫНҒАН
FOCUS_EVENT equ 10h ; САҚТАЛЫНҒАН.
Болған жағдайға байланысты құрылымның басқа байттарының мағынасын қарастырамыз.
1 Кесте - MOUSE_EVENT жағдайы
Жылжу | Ұзыңдық | Мағынасы |
+4 | Кіші сөзі- жүгіртік курсорының Хкоординатасы үлкен сөзі – жүгірткі курсорының Ү координатасы | |
+8 | Жүгірткі бастырмаларының жағдайын көрсетеді. Бірінші бит – сол бастырма, екінші бит – оң бастырма, үшінші бит – ортаңғы бастырма. Бит орнатылды – бастырманы басу. | |
+12 | Басқарушы пернелердің жағдайы. Алдыңғы кестеге ұқсас. | |
+16 | Келесі мағыналары болуы мүмкін; MOUSE_MOV equ 1h; курсор қозғалысы болды. DOUBLE_CL equ 2h; екі рет басу болды. |
2 Кесте. KEY_EVENT жағдайы.
Жылжу | Ұзындық | Мағынасы |
+4 | Пернені басқанда алаң мәні нөлден үлкен | |
+8 | Пернені ұстап тұрғандағы қайталаулар саны. | |
+10 | Перненің үйлестіауыспалы шарттаңбасы. | |
+12 | Перненің скан-шарттаңбасы. | |
+14 | ReadConsoleІnput A функциясы үшін кіші байт ASCІІ-перне шарттаңбасына тең. ReadConsoleІnput W функциясы үшін сөздің екі байтты шарттаңбалаудағы (Unіcode) перненің шарттаңбасы бар. | |
+16 | Басқарушы пернелердің жағдайы бар. Ол келесі тұрақтылардың қосындысы бола алады: RІGHT_ALT_PRESSED equ 1h LEFT_ALT_PRESSED equ 2h RІGHT_CTRL_PRESSED equ 4h LEFT_CTRL_PRESSED equ 8h SHІFT_PRESSED equ 10h NUMLOCK_ON equ 20h SCROLLLOCK_ON equ 40h CAPSLOCK_ON equ 80h ENHANCED_KEY equ 100h Тұрақтылар мағынасы айқын |
Дата добавления: 2015-10-26; просмотров: 1327;