ORANGEPRO

ORANGEPRO

وبلاگی در مورد دنیای کامپیوتر
ORANGEPRO

ORANGEPRO

وبلاگی در مورد دنیای کامپیوتر

توابع پرکاربرد در C++-6

تابع GetAsyncKeyState() در زبان C++ (در واقع یکی از توابع WinAPI در ویندوز) برای بررسی وضعیت لحظه‌ای کلیدهای صفحه‌کلید استفاده می‌شود — یعنی به‌صورت asynchronous یا «بدون وابستگی به event queue» وضعیت کلید را مستقیماً از سخت‌افزار یا سیستم‌عامل می‌خواند. 

?? این تابع در هدر زیر تعریف شده:
#include <windows.h>

 پارامترها:

    vKeyکدی است که نشان‌دهنده کلید مورد نظر است (Virtual-Key Code).مثلاً:
        VK_LEFT کلید جهت چپ
        VK_RIGHT  کلید جهت راست
        'A'  کلید A
        VK_SPACE  فاصله (space)
نوع خروجی SHORT (16 بیتی) است.

دو بخش مختلف این مقدار، اطلاعات متفاوتی را نشان می‌دهند:
بیت                                              معنی
بیت 15 (بالاترین بیت)     اگر 1 باشد یعنی کلید در حال حاضر فشرده است
بیت 0 (پایین‌ترین بیت)     اگر 1 باشد یعنی از آخرین فراخوانی تابع، کلید حداقل یک بار فشرده شده است
?? نکات مهم:

    به event queue وابسته نیست ? یعنی حتی اگر برنامه فریم‌ها را از دست بدهد یا پنجره غیرفعال باشد، همچنان می‌تواند کلیدها را تشخیص دهد.
    برای polling استفاده می‌شود، نه برای event-driven design.اگر برنامه نیاز به پردازش دقیق ورودی‌ها (مانند بازی‌ها) دارد، معمولاً با PeekMessage() یا GetMessage() ترکیب می‌شود.
      در محیط غیر ویندوز قابل استفاده نیست (تابع خاص Win32 API است).