Каждый создатель программ и игр на прототип MacOS, Windows, всевозможные стратегии, РПГ и т.д. и т.п. хочет, чтобы была возможность удобной навигации по объектам интерфейса, но создавать курсор, который с определенным текстовым тактом будет не совсем удобно перемещаться, тем более, если поставлен лимит времени... Тут нам поможет только мышь, световое перо, или графический планшет. Но как прописать такое устройство? Ниже я привел код написания обращения к драйверу и вывода на экран системного курсора (кампилятор сам выбирает тип, однако идет далеко не во всех режимах). Скопируйте его и дополните своей программой. НЕ ЗАБЫВАЙТЕ О ЛОКАЛЬНЫХ ПЕРЕМЕННЫХ! ПРОГРАММА "ЛЕЗЕТ" В ЯДРО СИСТЕМЫ, И ЕСЛИ КТО НАПОРТАЧИТ, Я ОТВЕТСТВЕННОСТИ НЕ НЕСУ! :^) Удачи!
DEFINT A - Z DEF SEG = &HA000 DIM SHARED MOUSE$ MOUSE$ = SPACE$ (57) SCREEN 12: CLS FOR I% = 1 TO 57 READ A$ H$ = CHR$ (VAL$ ("&H" + A$)) MID$ (MOUSE$, I%, 1) = H$ NEXT I% DATA 55, 89, E5, 8B, 5E, 0C, 8B, 07, 50, 8B, 5E, 0A, 8B, 07, 50, 8B, 5E, 08, 8B, 0F, 8B, 5E, 06, 8B, 17, 5B, 58, 1E, 07, CD, 33, 53, 8B, 5E, 0C, 89, 07, 58, 8B, 5E, 0A, 89, 07, 8B, 5E, 08, 89, 0F, 8B, 5E, 06, 89, 17, 5D, CA, 08, 00 RESTORE MS% = MOUSEINIT% IF NOT MS% THEN PRINT "Mouse not found!" END END IF MOUSE SHOW 'Показывает курсор мыши, а MOUSEHIDE - скрывает MOUSERANGE 0, 0, 630, 478 'Ваша программа, учитывая следующее: MOUSESTATUS Lb%, Rb%, X%, Y% 'После выполнения возвращает значения клавиш и положения курсора 'Далее идут процедуры, они автоматически будут "скрыты" с тела программы... DEFLNG A - Z SUB MOUSEDRIVER (AX%, BX%, CX%, DX%) DEF SEG = VARSEG (MOUSE$) MOUSE% = SAAD (MOUSE$) ABSOLUTE AX%, BX%, CX%, DX% END SUB DEFLNG A - Z SUB MOUSEHIDE AX% = 2 MOUSEDRIVER AX%, 0, 0, 0 END SUB DEFLNG A - Z SUB MOUSESHOW AX% = 1 MOUSEDRIVER AX%, 0, 0, 0 END SUB DEFLNG A - Z SUB MOUSEPUT (X%, Y%) AX% = 4 CX% = X% DX% = Y% MOUSEDRIVER AX%, 0, CX%, DX% END SUB DEFLNG A - Z SUB MOUSERANGE (X1%, Y1%, X2%, Y2%) AX% = 7 CX% = X1% DX% = X2% MOUSEDRIVER AX%, 0, CX%, DX% AX% = 8 CX% = Y1% DX% = Y2% MOUSEDRIVER AX%, 0, CX%, DX% END SUB DEFLNG MOUSESTATUS (LB%, RB%, X%, Y%) AX% = 3 MOUSEDRIVER AX%, BX%, CX%, DX% LB% = ((BX% AND 1) <> 0) RB% = ((BX% AND 2) <> 0) X% = CX% Y% = DX% END SUB DEFLNG A - Z FUNKTION MOUSEINIT% AX% = 0 MOUSEDRIVER AX%, 0, 0, 0 MOUSEINIT% = AX% END FUNKTION
-------------------------------------------------------------------------------------------
Размер файла:
1'673 байта (1,63 Кбайта) (в текстовом формате)
Если Вы в тексте обнаружили ошибку(и), прошу написать об этом (с указанием ошибки и места, где она есть) как можно подробнее в разделе "Админу!". Буду признателен за сотрудничество.