۲۸-اردیبهشت-۱۳۸۹, ۱۴:۱۸:۱۷
۲۸-اردیبهشت-۱۳۸۹, ۲۰:۴۹:۰۴
(۲۸-اردیبهشت-۱۳۸۹, ۱۴:۱۸:۱۷)Fire_Falcon نوشته است: [ -> ]سلام دوستان
میخواستم ببینم که میشه CIN رو زمان بندی کرد ؟؟؟؟؟
به طوری که مثلا برای 1 ثانیه منتظر Cin بمونه اگه داده ای که وارد نشد خط بعدی رو کامپایل کنه؟؟؟؟؟؟
سلام
اتفاقا منم چند روزه درگير اين قضيه هستم. وقت هم ندارم برم دنبالش
مي خوام هر موقع كه كاربر كليدي رو فشار داد بره تابعي رو اجرا كنه !
مثل رويداد ها در ويژوال بيسيك و ...
يه سري سورس كد رو هم گير اوردم و شبيه سازي رويداد ها رو ترمينال به زبان c++ رو انجام ميده!!!
هنوز تستش نكردم !
درباره اين موضوع زير تو گوگل سرچ كن . به نتايجي ميرسي
کد:
c++ key envent
موفق باشيد
۲۹-اردیبهشت-۱۳۸۹, ۲۱:۱۲:۰۱
من الان حضور ذهن ندارم دقیقا اسم توابع رو بگم (مدتیه C++ کار نمی کنم!!)
ولی اینی که میگی کاری نداره.
زمان سیستم رو بگیر. (خیلی راحته. اسم هدرش یادم نیست)
تو یه حلقه پایین بودن اون کلیدی که مد نظر داری رو چک کن (دستور اینم یادم نیست!! نسخه جدید getch ...) همینطور تو حلقه چک کن ببین از اون زمانی که اول گرفتی یک ثانیه گذشته یا نه ...
ولی اینی که میگی کاری نداره.
زمان سیستم رو بگیر. (خیلی راحته. اسم هدرش یادم نیست)
تو یه حلقه پایین بودن اون کلیدی که مد نظر داری رو چک کن (دستور اینم یادم نیست!! نسخه جدید getch ...) همینطور تو حلقه چک کن ببین از اون زمانی که اول گرفتی یک ثانیه گذشته یا نه ...
۲۹-اردیبهشت-۱۳۸۹, ۲۲:۱۸:۱۲
سلام
اینجوری که من از حرف هاتون فهمیدم شما می خواین که هر موقع که کاربر خواست خودش داده وارد کنه !!! و برنامه تون به کار خودش ادامه بده !!!
برای اینکار شما باید از تابع ReadConsoleInput استفاده کنید . در مثال زیر این تابع رو داخل یه حقله گذاشته شده که همیشه اجرا میشود و مقدار بازگشتی بررسی میشود !
برای مثال اگر کاربر x را فشار بده برنامه بسته میشود !
این کد فقط رو سیستم عامل ویندوز کار میکنه . من خود م رو کامپایلر Borland تست کردم و مشکلی نداشته
موفق باشید
اینجوری که من از حرف هاتون فهمیدم شما می خواین که هر موقع که کاربر خواست خودش داده وارد کنه !!! و برنامه تون به کار خودش ادامه بده !!!
برای اینکار شما باید از تابع ReadConsoleInput استفاده کنید . در مثال زیر این تابع رو داخل یه حقله گذاشته شده که همیشه اجرا میشود و مقدار بازگشتی بررسی میشود !
برای مثال اگر کاربر x را فشار بده برنامه بسته میشود !
کد:
#include <windows.h>
#include <iostream>
using namespace std;
int main()
{
HANDLE hIn;
HANDLE hOut;
COORD KeyWhere;
COORD MouseWhere;
COORD EndWhere;
bool Continue = TRUE;
int KeyEvents = 0;
int MouseEvents = 0;
INPUT_RECORD InRec;
DWORD NumRead;
hIn = GetStdHandle(STD_INPUT_HANDLE);
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
cout << "Key Events : " << endl;
cout << "Mouse Events : " << flush;
KeyWhere.X = 15;
KeyWhere.Y = 0;
MouseWhere.X = 15;
MouseWhere.Y = 1;
EndWhere.X = 0;
EndWhere.Y = 3;
while (Continue)
{
ReadConsoleInput(hIn,
&InRec,
1,
&NumRead);
switch (InRec.EventType)
{
case KEY_EVENT:
++KeyEvents;
SetConsoleCursorPosition(hOut,
KeyWhere);
cout << KeyEvents << " ScanCode : ";
cout << hex << InRec.Event.KeyEvent.wVirtualScanCode << flush;
if (InRec.Event.KeyEvent.uChar.AsciiChar == 'x')
{
SetConsoleCursorPosition(hOut,
EndWhere);
cout << "Exiting..." << endl;
Continue = FALSE;
}
break;
case MOUSE_EVENT:
++MouseEvents;
SetConsoleCursorPosition(hOut,
MouseWhere);
cout << MouseEvents << flush;
break;
}
}
return 0;
}
این کد فقط رو سیستم عامل ویندوز کار میکنه . من خود م رو کامپایلر Borland تست کردم و مشکلی نداشته
موفق باشید