سلام
من در مورد يونيت ماوس در پاسکال اطلاعات جامعی می خوام هر چی تو اينترنت سرچ
می کنم نتيجه ای نداره لطفا راهنماییم کنيد.ممنون
MasterData
07-05-2007, 22:27
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
توي اين نمونه برنامه هست
براي استفاده از 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 را بصورت نرم افزاري در مكان دلخواه قرار دهيد .
ثبات ورودي :
Ax := 04 ;
مختصات اشاره گر Mouse روي محور Xها : Cx
مختصات اشاره گر Mouse روي محور Yها : Dx
ثبات خروجي : ندارد .
procedure move(x,y:integer);
begin
asm
mov ax,04;
mov cx,x;
mov dx,y;
int 33h;
end;
end;
تابع 10Hex از وقفه 33Hex :
اين تابع ناحيه حركت Mouse را مشخص مي كند . هنگام استفاده از اين تابع Mouse در
محدوده اي كه اين تابع تعيين مي كند ، غير فعال است و فقط در بقيه مناطق حركت مي كند .
Ax := 10 ;
Cx := x1;
Dx := y1;
Si := x2;
Di := y2;
ثبات خروجي :ندارد .
procedure mexclusion(x1,y1,x2,y2:integer);
begin
asm
mov ax,10h;
mov cx,x1;
mov dx,y1;
mov si,x2;
mov di,y2;
int 33h;
end;
end;
تابع 0f Hex از وقفه 33Hex :
اين تابع براي تغيير سرعت حركت Mouse استفاده مي شود . هرچه مقدار وردي اين تابع بزرگتر باشد سرعن Mouse كمتر مي شود . در يك برنامه معمولي با مقادير (10,10) سرعتي مناسب براي Mouse تعيين مي شود .
ثبات ورودي :
Ax := 0f ;
سرعت Mouse روي محور Xها : Cx
سرعت Mouse روي محور Yها : Dx
ثبات خروجي : ندارد .
procedure mspeed(x,y:integer);
begin
asm
mov ax,0fh;
mov cx,x;
mov dx,y;
int 33h;
end;
end
اميدوارم تونسته باشم بهت بفهمونم!حتماً كار با پروسيجر را بلد هستي.
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.