2016-07-15 39 views
1

WM_SYSKEYDOWNとWM_SYSKEYUPでキーボード入力を試しました。WM_SYSKEYDOWNが更新されていない

ここに重要なコードパッドがあります。

 case WM_SYSKEYDOWN: 
      if (wParam == VK_MENU)  // VK_MENU = 18 = alt keys 
      { 
       if (!(lParam & (1 << 30))) 
       { 
        std::cout << "Pressed left alt key" << std::endl; 
       } 
      }; 
      break; 

     case WM_SYSKEYUP: 
      if (wParam == VK_MENU)  // VK_MENU = 18 = alt keys 
      { 
         std::cout << "Released left alt key" << std::endl; 
      }; 
      break; 

ボタンを押すと1つの文字列を印刷し、もう1つの文字列を印刷して、そのキーを放してみました。

リリースは、応答がのときに1回ずつ2回押すとが押されます。

if (!(lParam & (1 << 30))) 

この行は、頻繁に文字列をポストするのを中断する必要があります。

私はそれをなぜ受けていない...しかし、私は願っています。

ありがとうございます!

+0

WM_SYSKEYDOWNは*他のキーとAltキーを組み合わせた*キーストロークに予約されています。またはF10。それが何であっても、本来の意図された有用性をはるかに超えているという区別。それについては、WM_KEYDOWNと同じ方法で扱うのが理想的です。 –

+0

これは、どの "alt"キーがどのキーであるかを示す方法があることを意味します。左か右の?私はそれをする方法を見つけませんでした。左のAltキーはWPARAMのインデックスを入力するだけでは表示されません。だから、私はその方法を試してみました..(注:右のAltキーは私に必要なインデックスを与えます) – DotBlack

答えて

0

私はこの機能を使用しませんでした。

うまく機能
if (GetAsyncKeyState(VK_LSHIFT) & 0x8000) 
{ 
// Button pressed! 
} 

:D

+1

それはちょうどキーがダウンしていると伝えます。標準のwinapiプログラムで致命的なゲームのループで大丈夫です。 –

+0

私はちょうど各フレームで6つのキーをチェックしています。私はそれが問題だとは思わない。私はより良い解決策も見いだせなかった。 – DotBlack

関連する問題