キーシーケンスがプレスかどうか確認したいと思います。パスワードのように、正しい順序で "bcqwl"と入力する必要があるメッセージボックスを表示したいと思います。試しましたキーシーケンスがプレスかどうかを確認する方法は?
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
while(true)
{
if(GetKeyState('B') & 0x8000)
{
cout<<"b has been press"<<endl;
if(GetKeyState('C') & 0x8000)
{
cout<<"c has been press"<<endl;
if(GetKeyState('Q') & 0x8000)
{
cout<<"Q has been press"<<endl;
if(GetKeyState('W') & 0x8000)
{
cout<<"W has been press"<<endl;
if(GetKeyState('L') & 0x8000)
{
MessageBox(NULL,"YES","YES",MB_OK);
}
else
{
continue;
}
}
else
{
continue;
}
}
else
{
continue;
}
}
else
{
continue;
}
}
else
{
continue;
}
}
}
しかし、動作しません。 bを押すと、「Bは押されました」と印刷されますが、無限に何回も繰り返されます。 bの後に押すと、cを押すと何も起こりません。 だから私は疲れました:
step:
if(GetKeyState('B') & 0x8000)
{
cout<<"B has been press"<<endl;
goto step1;
}
else
{
goto step;
}
step1:
if(GetKeyState('C') & 0x8000)
{
MessageBox(NULL,"WORK","yes",MB_OK);
}
else
{
goto step;
}
しかし、動作しません。 私も疲れ:
#include <iostream>
#include <windows.h>
int main()
{
int progress = 0;
while(progress<=4)
{
if(GetKeyState('B') & 0x8000)
{
std::cout<<"b has been press"<<std::endl;
progress=1;
}
else
{
progress=0;
}
if(progress==1)
{
if(GetKeyState('C') & 0x8000)
{
std::cout<<"c has been press"<<std::endl;
progress=2;
}
else
{
progress=0;
}
}
if(progress==2)
{
if(GetKeyState('Q') & 0x8000)
{
std::cout<<"q has been press"<<std::endl;
progress=3;
}
else
{
progress=0;
}
}
if(progress==3)
{
if(GetKeyState('W') & 0x8000)
{
std::cout<<"w has been press"<<std::endl;
progress=4;
}
else
{
progress=0;
}
}
if(progress==4)
{
if(GetKeyState('L') & 0x8000)
{
std::cout<<"l has been press"<<std::endl;
progress=5;
}
else
{
progress=0;
}
}
}
return 0;
}
しかし、その出力は、私はBを押すと、と私はCを押すと何もpraticalyプレスbとプログラム行く後、起こっていないされた後に無限に多くの時間のための「bがプレスされている」ではなくif(process==1)
にありますが、私がcを押しても何も起こらない場合
PS私の悪い英語のために申し訳ありません。
私は自分の答えを更新しました。 – rbaleksandar
[namespace stdを使うのは悪い考えです](http://stackoverflow.com/q/1452721/995714)、特に '#include'では 'min'と' max'が両方とも定義されているので非常に悪いです –
Ok情報をありがとう、私は私のプログラムが動作するときに修正するつもりです。 – secon25