PDA

View Full Version : مبتدی: استفاده از صفحه کلید در برنامه



raminlich
چهارشنبه 05 شهریور 1393, 16:18 عصر
سلام:لبخند:(یه تاپیک دیگه مثل همین زدم ولی عنوان رو اشتباه نوشتم)http://barnamenevis.org/images/smilies/yahoo/109.gif
فرض یه ثانیه شمار مثل این داریم
#include <iostream>
#include <thread>
#include <chrono>
#include <windows.h>
using namespace std;
void start();
int i;
int main()
{
start();
}

void start()
{
for (i=0; i<=60; ++i) {
cout << i << endl;
this_thread::sleep_for (chrono::seconds(1));
system("cls");
}
}



می خواستم بدونم چه تابعی هست که مثلا هر وقت space رو زدیم یا هر کلید دیگه ای زمان وایسته بعد اگه دوباره زدیم کلید مورد نظر رو ادامه زمان استارت شه؟
ممنون

raminlich
چهارشنبه 05 شهریور 1393, 18:48 عصر
سوال من سخته کسی نمی تونه جواب بده یا این که همچین چیزی وجود نداره ؟ یا اینکه......:متفکر:
خودتون بگین.
اگه اشتباهه سوالم حداقل تاپیکو حذف کنن مدیران گرامی.

rahnema1
چهارشنبه 05 شهریور 1393, 19:26 عصر
سلام،
با استفاده از winapi میشه اینجور نوشت . مهم اینه که یک thread علاوه بر thread اصلی برنامه درست کنید که کارش کنترل فشردن صفحه کلید باشه و با تابع getch از کتابخانه conio.h هم کلید فشرده شده را ذریافت کنید

#include <iostream>
#include <windows.h>
#include <conio.h>
using namespace std;

bool flg=false;

unsigned ThreadFunc1( void* pArg)
{
while (1) if (getch()==32) flg=!flg;
return 0;
}

int main()
{
HANDLE hThread1 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&ThreadFunc1, NULL, 0, NULL);
int i=0;
while(1)
{
Sleep(1000);
if (!flg) cout<<i++<<endl;
}
CloseHandle(hThread1);
}