Ponieważ wprowadziłem Cię w błąd oferując fcję wherex i wherey, która działa tylko w crt, zamieszczam kawałek kodu, który pokazuje jak korzystając z przerwań można rozwiązać ten problem. Po najechaniu kursorem na prostokąt i kliknięciu lewego klawisza, na ekranie pojawia się tekst. Naciśnięcie w innym miejscu nie wywołuje reakcji. Można to też rozwiązać poprzez analizę koloru prostokąta stosując fcję getpixel(x,y). Kod nie jest optymalny bo to wycinek innego programu dużo wcześniej napisanego. Zamiast kazać wypisywać ttekst można przez fcję Exec(...) wywołać inny progr. O exec poczytaj w help'ie Pascala.
uses crt,graph,dos;
var x,y,a,b,c,d:integer;
rej:registers;
procedure MYSZ(z:integer;
var a,b,c,d:integer);
begin
case z of
1: begin with rej do ax:=1;
intr($33,rej);end;
end;
end;
procedure GDZIE;
var k:integer;
begin
with rej do begin rej.ax:=5;rej.bx:=0;end;
intr($33,rej);
with rej do
k:=rej.bx;
while k=0 do
begin
with rej do begin rej.ax:=5;rej.bx:=0;end;
intr($33,rej);
k:=rej.bx;c:=rej.cx;d:=rej.dx;
if(c>30)and(c<90)and(d>30)and(d<110) then begin
outtextxy(200,200,'dddd');
outtextxy(30,400,'press any key');
readkey;closeGraph;end
else k:=0;
end;
end;
begin
detectgraph(x,y);
initgraph(x,y,'c:\tp\bgi');
setcolor( 14);
rectangle(30,30,90,110);
setfillstyle(solidfill,1);
floodfill(40,40,14);
MYSZ(0,a,b,c,d);
MYSZ(1,a,b,c,d);
GDZIE;
{ readkey;}
end.
Tu: initgraph(x,y,'c:\tp\bgi');
musi być podana pełna ścieżka do katalogu. U mnie jest jak powyżej.