استفاده از Mouse در محیط گرافیک :
برای استفاده از Mouse در محیط گرافیکی باید وقفه مربوط به فعال سازی Mouse را فراخوانی کنیم . این وقفه 33Hex (هگزاد سیمال) نام دارد و شامل یکسری توابع است که هر تابع با یک شماره مشخص شده و کاربرد خاصی دارد . هرکدام از توابع مذکور دارای ثباتهای ورودی و خروجی هستند . ثبات های ورودی باید قبل از فراخوانی وقفه مقدار دهی شوند تا وقفه عمل مورد نظر ما را انجام دهد و ثباتهای خروجی نتایج اجرای وقفه را برمی گردانند .
تابع 00Hex از وقفه 33Hex :
این تابع اعمال زیر را انجام می دهد :
1- پارامترهای Mouse را با مقادیر پیش فرض Set می کند .
2- اشاره گر Mouse را به مرکز صفحه منتقل می کند .
ثبات ورودی :
Ax := 0 ;
ثبات خروجی :
درایور Mouse نصب شده است . Ax = ffff Hex
درایور Mouse نصب نشده است . Ax = 0000 Hex
تعداد کلید های Mouse را مشخص می کند . Bx = 3
function mreset:integer;
var i:integer;
begin
asm;{ این دستور برای نوشتن دستورات اسمبلی بکار می رود . }
mov ax,0;
int 33h; {فراخوانی وقفه }
mov i,ax;
end;
end;
نکته : این تابع فقط Mouse را فعای می کند ولی اشاره گر Mouse را آشکار نمی کند . برای نمایان شدن اشاره گر Mouse باید از تابع بعدی استفاده کنیم .
تابع 01Hex از وقفه 33Hex :
این تابع اشاره گر Mouse را در صفحه نشان می دهد . قبل از اجرای این تابع باید تابع Mreset اجرا شده باشد .
ثبات ورودی :
Ax := 01 ;
ثبات خروجی : ندارد .
procedure mshow;
begin
asm;
mov ax,01h;
int 33h;
end;
end;
تابع 02Hex از وقفه 33Hex :
این تابع اشاره گر Mouse را پنهان می کند .
ثبات ورودی :
Ax := 02 ;
ثبات خروجی : ندارد .
procedure mhide;
begin
asm;
mov ax,02h;
int 33h;
end;
end;
تابع 03Hex از وقفه 33Hex :
این تابع برای تشخیص مکان اشاره گر Mouse در هر لحظه و تعیین کلید فشره شده بکار می رود .
ثبات ورودی :
Ax := 03 ;
ثبات خروجی :
مختصات اشاره گر Mouse روی محور Xها :Cx
مختصات اشاره گر Mouse روی محور Yها :Dx
تعیین کلید فشرده شده : Bx
کلید چپ : 0 کلید راست : 1 کلید وسط : 2
ساختار ثبات Bx بصورت شکل بالا است پس به ازای فشرده شدن هر کلید مقادیر زیر را خواهیم داشت .
کلید چپ Bx = 1 :
کلید راست Bx = 2 :
کلید وسط Bx = 4 :
procedure mbutton(var x1:integer;var y1:integer;var k1:integer);
var x,y,k:integer;
begin
asm
mov ax,03;
int 33h;
mov x,cx;
mov y,dx;
mov k,bx;
end;
x1:=x;
y1:=y;
k1:=k;
end;
تابع 04Hex از وقفه 33Hex :
با استفاده از این تابع می توانید اشاره گر Mouse را بصورت نرم افزاری در مکان دلخواه قرار دهید .