جمعه, ۱۲ بهمن, ۱۴۰۳ / 31 January, 2025
مجله ویستا

برنامه نویسی ماوس در Turbo C


برنامه نویسی ماوس در Turbo C

با توجه به این كه برنامه های تحت داس رابط ضعیفی نسبت به ویندوز و لینوكس و دارند ما حداقل باید برنامه هایمان را به ماوس مجهز كنیم تا این نقص تا حدودی برطرف شود مخصوصا اگر بخواهیم یك برنامه گرافیكی بنویسیم برنامه مان بدون ماوس غیر قابل استفاده خواهد بود

با توجه به این كه برنامه های تحت داس رابط ضعیفی نسبت به ویندوز و لینوكس و... دارند ما حداقل باید برنامه هایمان را به ماوس مجهز كنیم تا این نقص تا حدودی برطرف شود. مخصوصا اگر بخواهیم یك برنامه گرافیكی بنویسیم برنامه مان بدون ماوس غیر قابل استفاده خواهد بود. خب بهتره بریم سر اصل مطلب. در این مقاله فعال كردن ماوس در زبان C توضیح داده شده. البته ما ماوس را با استفاده از وقفه ها كه در تمام كامپیوترهای IBM یكی هستند فعال می كنیم و كدهای ارائه شده با كمی تغییر در پاسكال و بیسیك نیز كار خواهند كرد. اگر شما با زبان C آشنایی ندارید ممكن است این كدها برایتان ناآشنا باشند.

پس بهتر است از خواندن این مقاله صرفنظر كنید. البته ممكن است به زودی آموزش C و ++C را نیز در این سایت بگذاریم. ابتدا برای این كه از ماوس استفاده كنیم باید بفهمیم كه درایور ماوس نصب شده یا نه؟ اگر نصب نشده باشد نمی توان ماوس را فعال كرد. برای این كار از تابع شماره ۰۰hex از وقفه ۳۳hex استفاده می كنیم. اگر قبلا با وقفه ها كار كرده باشید حتما می دانید كه شماره تابع وقفه در ثبات AH قرار می گیرد ولی توابع ۳۳hex به جای AH از AX استفاده می كنند. یعنی برای فراخوانی این وقفه شماره تابع آن را در ثبات AX قرار می دهیم.

پس از فراخوانی این وقفه اگر مقدار ثبات AX برابر ۰۰۰۰hex باشد یعنی درایور ماوس نصب نشده و ما نمیتوانیم از ماوس استفاده كنیم. پس از این كار باید نشانگر ماوس را د ر صفحه ظاهر كنیم. نشانگر ماوس دقیقا در وسط صفحه ظاهر خواهد شد. اگر در حالت متنی باشیم این نشانگر به صورت یك مستطیل و اگر در حالت گرافیكی باشیم نشانگر به صورت یك فلش كوچك نشان داده خواهد شد. برای ظاهر كردن كافی است از تابع شماره ۰۱ وقفه ۳۳h استفاده كنیم. برنامه زیر هم درایور ماوس را تشخیص داده و هم آن را در حالت متنی نشان میدهد:

#include <STDIO.H>

#include <CONIO.H>

#include <STDLIB.H>

#include <DOS.H>

void main()

{ union REGS r;

clrscr();

r.x.ax= ۰;

int۸۶(۰x۳۳,&r,&r);

if(r.x.ax==۰)

{

printf("No Mouse Available.....");

getch();

exit(۱);

}

r.x.ax=۱;//place ۰۱ in AX register

int۸۶(۰x۳۳,&r,&r);//showing the mouse pointer

printf(“press any key to exit…”);

getch();

}