وبلاگ فرهاد مرتضی پور

Farhad Mortezapour's Blog

وبلاگ فرهاد مرتضی پور

Farhad Mortezapour's Blog

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

ابتدا برای این که از ماوس استفاده کنیم باید بفهمیم که درایور ماوس نصب شده است یا نه ؟ اگر نصب نشده باشد نمی توان ماوس را فعال کرد. برای این کار از تابع شماره 00H از وقفه 33H استفاده می کنیم. پس از فراخوانی این وقفه اگر مقدار ثبات AX برابر 0000H باشد یعنی درایور ماوس نصب نشده و ما نمیتوانیم از ماوس استفاده کنیم. پس از این کار باید نشانگر ماوس را در صفحه ظاهر کنیم. نشانگر ماوس دقیقا در وسط صفحه ظاهر خواهد شد. اگر در حالت متنی باشیم این نشانگر به صورت یک مستطیل و اگر در حالت گرافیکی باشیم نشانگر به صورت یک فلش کوچک نشان داده خواهد شد. برای ظاهر کردن کافی است از تابع شماره 01 وقفه 33H استفاده کنیم. برنامه زیر هم درایور ماوس را تشخیص داده و هم آن را در حالت متنی نشان میدهد :

 

#include <STDIO.H>

#include <CONIO.H>

#include <STDLIB.H>

#include <DOS.H>

void main()

{

      union REGS r;

      clrscr();

      r.x.ax= 0;

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

      if(r.x.ax==0)

      {

            printf("No Mouse Available”);

            getch();

            exit(1);

      }

      r.x.ax=1;

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

      printf(“press any key to exit”);

      getch();

}

 

تابع مفید دیگر برای کار با ماوس تابع 02 از وقفه 33H میباشد. این تابع نشانگر ماوس را پنهان می کند. فرض کنید می خواهید مانند برنامه Paint وقتی ماوس را میکشید یک خط هم با آن کشیده شود. در این حالت اگر نشانگر ماوس دیده شود بعضی از نقاط خط پاک خواهند شد و بهتر است که در این مواقع نشانگر را پنهان کنیم. برای کار با ماوس باید بدانیم که نشانگر اکنون درکجای صفحه می باشد یعنی مختصات (x, y) آن را بدست آوریم. برای این کار از تابع شماره 03 استفاده می کنیم. که پس از فراخوانی تابع ثبات CX حاوی مختصات افقی (x) و DX حاوی مختصات عمودی نشانگر خواهد بود. کار مهم دیگر تشخیص کلیدهای فشرده شده ماوس است. تابع 03 همچنین تعیین می کند که کدام کلید از ماوس فشرده شده است. این کلیدها را ثبات BX تعیین میکند. مثال زیر نحوه کار را مشخص می کند :

 

#include <STDIO.H>

#include <CONIO.H>

#include <STDLIB.H>

#include <DOS.H>

void main()

{

      union REGS i,o;

      clrscr();

      i.x.ax=0;

      int86(0x33, &i, &o);

      if(o.x.ax==0)

      {

            printf("No Mouse Available”);

            exit(1);

      }

      i.x.ax=1;

      int86(0x33, &i, &o);

      gotoxy(25,23);

      printf("Press any key to exit”);

      while(!kbhit())

      {

            i.x.ax=3;

            int86(0x33, &i, &o);

            gotoxy(2,2);

            printf("x=%d \n y=%d", o.x.cx, o.x.dx);

            if(o.x.bx==0x01) printf(“Right button of mouse pressed);

      }

      i.x.ax=2;

      int86(0x33, &i, &o);

}

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد