マウスイベントに応答するためにコンソールプログラムをVSに書きます。私は、私がクリックしたときに何かを印刷したいので、私はこのコードを書く:VSでコンソールを左クリックするとコンソールプログラムが中断されるのはなぜですか?
int keyPressed(int key){
return (GetAsyncKeyState(key) & 0x8000 != 0);
}
void Mouse::click(){
while (1)
{
if (keyPressed(VK_LBUTTON) || keyPressed(VK_RBUTTON)){
cout << "click\n";
}
}
}
int main(){
Mouse mouse;
while (1){
mouse.click();
}
}
私は、左クリックしたときに、「クリック」が印刷されたが、私はキーボードや右クリックを押した場合、それはされていません印刷されます。
何が起こっていますか?どうすればそれを処理できますか?ありがとう〜
右クリックすると、問題はありません。 – Rachel
左のマウスはハイライトテキストに使用されているので、次に選択されたテキストをコピーするために 'Enter'キーをクリックしているからです。何が行われているかにかかわらず、マウスの左ボタンをクリックすると、コンソール出力は常に停止します。無関係な問題: 'while(1)'ループは非常に効率が悪いので、CPUコア全体をハイジャックして円を描こうとします。少なくとも「スリープ(10)」をそこに入れてください。しかし、適切なGUIプログラムを作成するためには、実際にウィンドウプログラム(* "Win32コンソールプロジェクト" *の代わりに* "Win32プロジェクト" *を作成する)が必要です。(例:https://msdn.microsoft.com/en-us/ライブラリー/ bb384843.aspx) –
これは、ウィンドウキャプションの左上にあるアイコン> [編集]> [マーク]をクリックすると、より明示的に行われます。ユーザーがコンソールウィンドウからテキストをコピー/ペーストできるようにするのに役立ちます。単純なマウスクリックが自動的に編集モードに入るかどうかは設定です。アイコン> [プロパティ]> [オプション]タブをクリックし、[クイック編集モード]チェックボックスをオフにします。 –