رفتن به مطلب
برنامه نویسی من
Mostafa

چگونگی راه اندازی ماوس در زبان برنامه نویسی C

پست های پیشنهاد شده

برای استفاده از مویس در Dos می بایست از وقفه ۳۳ کمک گرفت . بنابراین در این مقاله قبل از توضیح بکارگیری ماوس در C ابتدا به تشریح بکارگیری وقفه ها در C می پردازیم.
کسانی که با زبان برنامه نویسی اسمبلی کار کرده اند ، با کار وقفه ها به خوبی آشنایی دارند . در واقع در زبان اسمبلی تمامی کارها با فراخوانی وقفه ها انجام میشود چرا که این زبان یک زبان سطح پایین است . اما در زبانهای سطح بالا مثل C وقفه ها از چشم کاربر دور شده اند تا زبان برنامه نویسی به زبان محاوره ای انسان نزدیکتر شود . با این حال فراخوانی وقفه ها در C برای برنامه نویس امکان پذیر است .
در زبان C ایتدا باید یک متغیر از نوع رجیستر تعریف شود تا بتوان به کمک آن به رجیستر ها دستیابی داشت :

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.


در تعریف بالا متغیر r از نوع Register تعریف شده که این نوع در سرفایل Dos.h قرار دارد.
حال برای دستیابی به یک رجیستر مانند AX و یا اجزای آن یعنی AH , AL یک یونیون در Dos.h تعریف شده است که ساختمان داخلی x در آن برای دستیابی به رجیستر ۲ بایتی (رجیستر کامل ) مانند AX و ساختمان داخلی h برای دستیابی به اجزای رجیستر ۲ بایتی یعنی AH , AL که یک بایتی هستند ، می باشند:

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

پس اگر بخواهیم به رجیستر AX و مانند آن دستیابی پیدا کنیم می نویسیم :
r.x.ax
و برای اجزای آن می نویسیم :

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

پس از مقدار دهی رجیستر ها و مشخص کردن شماره تابع یا سرویس ، نوبت به فراخوانی وقفه یا اینتراپت می رسد که با فرمان زیر انجام می شود :
int86(آدرس متغیر رجیستر خروجی,آدرس متغیر رجیستر ورودی,شماره وقفه در مبنای ۱۶);
اعداد مبنای ۱۶ در C با ۰x شروع می شوند . مثلا اگر بخواهیم تابع شماره ۱ از وقفه ۳۳ را فراخوانی کنیم باید شماره تابع را در AH قرار داده و سپس وقفه را فراخوانی کنیم :

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

که البته در مثال بالا از آنجایی که AH جزوی از AX می باشد و در سمت راست مقدار دهی می شود از AX استفاده شده است . در واقع AX=01 یعنی AL=0 و AH=1 .
متغیر in شامل ورودی های وقفه است و چنانچه وقفه خروجی هم داشته باشد خروجی های آن در out قرار می گیرد.
حال به استفاده از ماوس می پردازیم .
۱- راه اندازی ماوس : تابع ۰ از وقفه ۳۳ : اگر پس از اجرای وقفه مقدار AX برابر ۰ باشد یعنی ماوس راه اندازی نشده است .

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

لازم به ذکر است که قبل از فراخوانی این تابع باید درایور ماوس در داس را اجرا کنید مثلا : GMouse.com
۲ – نمایش کرسر ماوس : تابع ۱ از وقفه ۳۳ : پس از راه اندازی مویس اجرا می شود .

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

۳- مخفی کردن کرسر ماوس : تابع ۲ از وقفه ۳۳ :

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

۴-بدست آوردن مختصات مکان نمای مویس : تابع ۳ از وقفه ۳۳ : پس از اجرای وقفه شماره ستون در CX و سطر در DX قرار می گیرد .

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

۵- انتقال کرسر : تابع ۴ از وقفه ۳۳ : قبل از فراخوانی می بایست شماره ستون مورد نظر در CX و شماره سطر در DX قرار گیرد .

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

۶- تست کلیک شدن ماوس : تابع ۵ از وقفه ۳۳ : شماره کلید ماوس باید در BX قرار گیرد ( ۰ برای چپ – ۱ برای راست و ۲ برای وسط ) . اگر کلیک شده باشد مقدار ۱ در BX و گرنه ۰ در آن قرار می گیرد.

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

توابع گفته شده سرویسهای مهم بکارگیری ماوس بود . سایر توابع را می توانید در جدول وقفه های داس در ستون وقفه ۳۳ بیابید .

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری

×
×
  • اضافه کردن...