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



         

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


PRINT "Работает драйвер MS-DOS ";

PRINT "Число кнопок = ";

IntProg(14);

SLEEP 5

IntProg(13)=1: ' Подфункция визуализации курсора на экране

CALL ABSOLUTE(Int33&)

IntProg(13)=3: ' Подфункция опроса состояния мыши

15:СХ=х

16:DX=y

14:ВХ=состояние кнопок:

' 1 - нажата левая,- 2 - правая, 4 - средняя

FOR j%=l TO 60

CALL ABSOLUTE(Int33&)

LOCATE 4,1

PRINT USING "x=### y=### кнопка #";IntProg(15);IntProg(16);

IntProg(14)

SLEEP 1 NEXT j%

LOCATE 6,1: PRINT "Цикл окончен. Нажмите любую'клавишу"

SLEEP DEE SEG END

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

/* Работа с мышью в текстовом режиме */

#include <dos.h>

#include <stdio.h>

#include <conio.h>

void main() (

int i,j;

union REGS r; clrscr () ;

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

cextcolor (7); textbackground (1) ;

for(1=1; i<12; i++) {

for(j=0; j<80; j++) cprintf("%d", j%10) ;

printf{"\n"); }

r.x.ax=0;

/* подфункция сброса драйвера */

int86(0x33,&r,&r);

textbackground(0);

gotoxy(1,2);

if(r.x.ax==0xFFFF) cprintf("Работает драйвер MS-DOS ");

cprintf("Число кнопок = %d",r.x.bx);

r.x.ax=l; sleep(5);

/* Подфункция визуализации курсора на экране */

int86(0x33,&r,&r); r.x.ax=3;

/* Подфункция опроса состояния мыши*/

for(j=0; j<60; j++) {

int86(0x33,&r,Sr);

gotoxy(1,4);

clreol();

cprintf("x=%d y=%d нажата кнопка %d",r.x.ex,r.x.dx,r.x.bx);

sleep(1); }

gotoxy(1,6);

cprintf("Цикл окончен. 'Нажмите любую клавишу");

getch (); }

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

program intl; uses Crt,Dos;

var

i,j:longint;

r:Registers;

begin

clrscr; {Роспись экрана линейками через строку}

textcolor(7);

textbackground(1);

s

for i:=0 to 10 do

begin

for j:=0 to 79 do

write(j mod 10); writeln;

end;

textbackground(0);

{подфункция сброса драйвера}

r.AX:=0;

Intr($33,r);

gotoxy(l,2);

if r.AX=$FFFF then write('Работает драйвер MS-DOS ');

write('Число кнопок = ',r.ВХ);

r.AX:=l;

{ Подфункция визуализации курсора на экране }

Intr($33,r); r.AX:=3;

{Подфункция опроса состояния мыши}

for j:=1 to 60 do begin

Intr($33,r);

gotoxy(l,4);

clreol;

write('x=',r.CX, ' y=',r.DX, ' кнопка =',r.BX);

for i:=0 to 10000000 do i:=i;

end;

gotoxy(1,6); write('Цикл окончен. Нажмите Enter');

readln;

end.




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