Практика программирования (Бейсик, Си, Паскаль)



         

Управление мышью - часть 2


Наиболее важной является подфункция 3, которая сообщает текущие координаты курсора в пикселах (х=CX, у=DX) и состояние кнопок мыши в момент вызова подфункции (BX=1 — нажата левая кнопка, BX=2 — нажата правая кнопка, BX=4 — нажата средняя кнопка). В принципе, значением вх может быть любая комбинация одновременно нажатых кнопок. В текстовом режиме значения координат однозначно определяются номерами текущей строки (row) и текущего столбца (col):

x=8*(col-l) y=8*(row-l)

В этом вы можете убедиться на примерах следующих программ, построенных по единой схеме. После "сброса" драйвера дается 5-секундная задержка, чтобы рассмотреть текст сообщения о состоянии драйвера и мыши (курсор в это время не виден). Затем включается режим отображения курсора. Далее 60 раз с задержкой в 1 с выполняется цикл, в котором Опрашивается и отображается на экране состояние мыши. Во время этого цикла вы можете перемещать курсор мыши, устанавливая его на пронумерованные позиции строк экрана и зажимая ту или иную кнопку. Координата х при этом меняется от 0 до 632, а координата у — от 0 до 192.

Программа 10_3.bas

' Модификация программы [7], использована первая версия подпрограммы в ' машинных кодах)

DATA &Н60,SH1E,SH0E,SH1F,&НА1,&Н18,SH00,&HCD, &H33,&H89

DATA &H1E,&H1A,&H00,&H89,SH0E,&H1C,&H00,&H89,&H16,&H1E

DATA &H00,&H1F,&H61,&HCB

DIM IntProgd T0 16) AS INTEGER

' установка сегмента для работы подпрограммы DEF

SEG=VARSEG(IntProg(1)}

' установка смещения для работы подпрограммы

Int33&=VARPTR(IntProg(1))

' Перепись подпрограммы из блока данных в массив побайтно

F0R j%=0 T0 23

READ K%: P0KE IntDos&+j%, К% NEXT j%

' Роспись экрана линейками через строку

CLS

C0L0R 7,1

F0R I=1 ТО 11

F0R j%=0 T0 79

PRINT USING "#";j% M0D 10;

NEXT j%

PRINT : PRINT NEXT I COLOR 7,0

IntProg(13)=0: ' Подфункция сброса драйвера мыши

CALL ABSOLUTE(Int33&) LOCATE 2,1

IF IntProg(13)=-1 THEN




Содержание  Назад  Вперед