استرس و چالش هاى این دنیا از بین نخواهند رفت؛ زندگى به طور معجزه آسا ,آسان تر نخواهد شد.
حقیقت این است که: ما نمى توانیم شرایط بیرونى را کنترل کنیم, اما مى توانیم واکنش خود را تغییر دهیم.
ما باید تغییر کنیم وخودمان را با شرایط سخت تطبیق دهیم.
قدرت واقعى در این است که اجازه ندهیم وقایع بیرونى، آرامش درونى ما را از بین ببرند.
امروز تصمیم بگیر که به جاى آرزوى تغییر دنیا, خودت را قوى ترکنى.
تابع 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 است).
تشریح کامل تابع clearmouseclick(event)
در محیطهای گرافیکی، ورودیهای کاربر (مانند فشار دادن کلید، حرکت ماوس، یا کلیک ماوس) به صورت رویداد (Events) در یک صف (Queue) ذخیره میشوند. برنامه شما در یک حلقه (Loop) مدام این صف را بررسی میکند.
1. هدف اصلی: مدیریت صف رویداد (Event Queue Management)
هدف اصلی clearmouseclick(event) این است که یک رویداد خاص را که قبلاً تشخیص داده شده و پردازش شده است، از این صف خارج کند تا از پردازش مجدد آن در تکرارهای بعدی حلقه جلوگیری شود.
2. ساختار آرگومانها: event
آرگومان event مشخص میکند که کدام نوع رویداد باید از صف پاک شود. در محیطهایی که از این تابع استفاده میشود، این آرگومانها معمولاً با مقادیری مانند:
WM_LBUTTONDOWN: رویداد فشار دادن دکمه چپ ماوس.
WM_LBUTTONUP: رویداد رها کردن دکمه چپ ماوس.
WM_RBUTTONDOWN: رویداد فشار دادن دکمه راست ماوس.
و… (که در ویندوز با نامهای WM_... شناخته میشوند).
تفاوت با ismouseclick()
ismouseclick(event): فقط بررسی میکند که آیا رویداد مورد نظر در حال حاضر در صف وجود دارد یا خیر (عملیات Read-Only).
clearmouseclick(event): رویداد مورد نظر را از صف حذف میکند (عملیات Write/Mutating).
ismouseclick();
یک تابع نوع بولین برای تعیین وضعیت کلیک انجام شده بطورمثال:
ismouseclick(WM_LBUTTONDOWN);
تعیین میکند که آیا دکمه چپ ماوس فشرده شده یا خیر ودرون یک شرط قابل برقراری هست یا خیر.نمونه کد آن برای استفاده در شرط بگونه زیر است:
if (ismouseclick(WM_LBUTTONDOWN)){
outtext("LEFT BUTTON DETECTED");
}
این تابع می تواند 6 وضعیت را تعیین تکلیف کند که عبارت اند از:
WM_LBUTTONDOWN کلیک دکمه چپ ماوس (فشرده شدن)
WM_RBUTTONDOWN کلیک دکمه راست ماوس (فشرده شدن)
WM_MBUTTONDOWN کلیک دکمه وسط ماوس (فشرده شدن)
WM_LBUTTONUP رها شدن دکمه چپ ماوس
WM_RBUTTONUP رها شدن دکمه راست ماوس
WM_MBUTTONUP رها شدن دکمه وسط ماوس
برای رسم دایره در محیط گرافیکی C++ از تابع زیر استفاده میکنیم .که x1 نقطه x دایره y1نقطه y دایره و R1 را شعاع دایره میگویند.
circle(x1,y1,R1);
برای رسم یک مستطیل در محیط گرافیکی در C++ شما بایستی از تابع زیر استفاده کنید .که x1وy1 نقطه شروع رسم و x2 وy2 نقطه پایانی رسم مستطیل هستند.در ادامه اگر سوالی داشتید از طریق بخش نظرات بپرسید حتما پاسخگو هستیم.
rectangle(x1, y1, x2, y2);
لینک های مرتبط:
دو تابع زیر برای ست کردن رنگ یکی برای خطوط و اشکال و دیگری برای پس زمینه.
برای اینکه رنگ مورد نظر خودمان رابه تابع ارسال کنیم بایستی به دو روش (البته جداگانه) عمل کنیم.
یک: اینکه شماره رنگ را از 0 تا 15 وارد کنیم.
دو:اینکه با حروف بزرگ آن رنگ را بنویسیم مانند:BLUE یا BLACK
توجه : در قسمتی که با عنوان color نوشته شده از یکی از دو روش فوق استفاده می کنیم.
setcolor(color): رنگ فعال برای ترسیم اشکال خطی و متن را تنظیم میکند.
setbkcolor(color): رنگ پسزمینه صفحه را تنظیم میکند.
لینک های مرتبط: