نمایش نتایج: از شماره 1 تا 1 , از مجموع 1

موضوع: استفاده از Mouse در c

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    عضو سایت
    گاه برای ساختن باید ویران کرد، گاه برای داشتن باید گذشت ، و گاه در اوج تمنا باید نخواست!
    تاریخ عضویت
    Jun 2011
    محل سکونت
    یک خانه
    نوشته ها
    25,040
    تشکر تشکر کرده 
    3,527
    تشکر تشکر شده 
    5,275
    تشکر شده در
    3,184 پست
    حالت من : Akhmoo
    قدرت امتیاز دهی
    4452
    Array

    استفاده از Mouse در c

    براي استفاده از Mouse در Dos مي بايست از وقفه 33 كمك گرفت . بنابراين در اين مقاله قبل از توضيح بكارگيري مويس در C ابتدا به تشريح بكارگيري وقفه ها در C مي پردازيم.

    كساني كه با زبان برنامه نويسي اسمبلي كار كرده اند ، با كار وقفه ها به خوبي آشنايي دارند . در واقع در زبان اسمبلي تمامي كارها با فراخواني وقفه ها انجام ميشود چرا كه اين زبان يك زبان سطح پايين است . اما در زبانهاي سطح بالا مثل C وقفه ها از چشم كاربر دور شده اند تا زبان برنامه نويسي به زبان محاوره اي انسان نزديكتر شود . با اين حال فراخواني وقفه ها در C براي برنامه نويس امكان پذير است .

    در زبان C ايتدا بايد يك متغير از نوع رجيستر تعريف شود تا بتوان به كمك آن به رجيستر ها دستيابي داشت :



    در تعريف بالا متغير r از نوع Register تعريف شده كه اين نوع در سرفايل Dos.h قرار دارد.

    حال براي دستيابي به يك رجيستر مانند AX و يا اجزاي آن يعني AH , AL يك يونيون در Dos.h تعريف شده است كه ساختمان داخلي x در آن براي دستيابي به رجيستر 2 بايتي (رجيستر كامل ) مانند AX و ساختمان داخلي h براي دستيابي به اجزاي رجيستر 2 بايتي يعني AH , AL كه يك بايتي هستند ، مي باشند:



    پس اگر بخواهيم به رجيستر AX و مانند آن دستيابي پيدا كنيم مي نويسيم :


    و براي اجزاي آن مي نويسيم :



    پس از مقدار دهي رجيستر ها و مشخص كردن شماره تابع يا سرويس ، نوبت به فراخواني وقفه يا اينتراپت مي رسد كه با فرمان زير انجام مي شود :




    (آدرس متغير رجيستر خروجي,آدرس متغير رجيستر ورودي,شماره وقفه در مبناي 16);

    اعداد مبناي 16 در C با 0x شروع مي شوند . مثلا اگر بخواهيم تابع شماره 1 از وقفه 33 را فراخواني كنيم بايد شماره تابع را در AH قرار داده و سپس وقفه را فراخواني كنيم :


    كه البته در مثال بالا از آنجايي كه AH جزوي از AX مي باشد و در سمت راست مقدار دهي مي شود از AX استفاده شده است . در واقع AX=01 يعني AL=0 و AH=1 .

    متغير in شامل ورودي هاي وقفه است و چنانچه وقفه خروجي هم داشته باشد خروجي هاي آن در out قرار مي گيرد.

    حال به استفاده از Mouse مي پردازيم .

    1- راه اندازي Mouse : تابع 0 از وقفه 33 : اگر پس از اجراي وقفه مقدار AX برابر 0 باشد يعني مويس راه اندازي نشده است .



    لازم به ذكر است كه قبل از فراخواني اين تابع بايد درايور مويس در داس را اجرا كنيد مثلا : GMouse.com

    2 - نمايش كرسر مويس : تابع 1 از وقفه 33 : پس از راه اندازي مويس اجرا مي شود .


    3- مخفي كردن كرسر مويس : تابع 2 از وقفه 33 :




    4-بدست آوردن مختصات مكان نماي مويس : تابع 3 از وقفه 33 : پس از اجراي وقفه شماره ستون در CX و سطر در DX قرار مي گيرد .




    5- انتقال كرسر : تابع 4 از وقفه 33 : قبل از فراخواني مي بايست شماره ستون مورد نظر در CX و شماره سطر در DX قرار گيرد .





    6- تست كليك شدن مويس : تابع 5 از وقفه 33 : شماره كليد مويس بايد در BX قرار گيرد ( 0 براي چپ - 1 براي راست و 2 براي وسط ) . اگر كليك شده باشد مقدار 1 در BX و گرنه 0 در آن قرار مي گيرد.



    توابع گفته شده سرويسهاي مهم بكارگيري مويس بود . ساير توابع را مي توانيد در جدول وقفه هاي داس در ستون وقفه 33 بيابيد .

    منبع پارسی فوروم. البته هر سوالی داشتید سعی میکنم جواب بدم با معلوماتی که دارم.
    [دل خوش از آنیم که حج میرویم؟ ..]
    غافل از آنیم که کج میرویم



    [SIGPIC][/SIGPIC]


  2. کاربر مقابل از shirin71 عزیز به خاطر این پست مفید تشکر کرده است:


برچسب ها برای این تاپیک

علاقه مندی ها (بوک مارک ها)

علاقه مندی ها (بوک مارک ها)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست در پست خود ضمیمه کنید
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

http://www.worldup.ir/