1

私は自分のプログラムのバグを突き止めようとしてきました。上下の矢印キーを押しながらスペースバーを押すと、WPARAMがVK_SPACEのWM_KEYDOWNメッセージがWndProcによって受信または処理されないことに気付きました。

少し興味があったので、Spy ++を開いて、ウィンドウに送信されたメッセージを表示し始めました。左矢印キーと上矢印キーを押しながら別のキー、たとえばAを押すと、WM_KEYDOWN(およびWM_CHAR)メッセージがウィンドウに送信されることに気付きました。

しかし、上下の矢印キーを押しながらスペースバーを押すと、スペースバーがヒットしたことを示すWM_KEYDOWNメッセージがウィンドウに送信されません。

これの理由は何ですか?誰かがこの動作を確認できますか?

4

1 に答える 1

2

これは、キーボードがゴースティングと呼ばれる処理を実行しているために発生します。これは、今日人々が使用しているキーボードの大部分では正常です。製造コストが大幅に安くなるように配線されているため、このようなことが一貫して発生します。

基本的に、同じ行/列の3つのキーを同時に押すと、すべてを一意に識別できず、少なくとも1つのキーが通過しなくなります。あなたができる唯一のことは、ゴースト防止キーボードを購入するか、競合を避けるためにコントロールを再設計することです。

個人的なレベルでは、ゲームを発表する1、2日前にこれを知り、コントロールをP1:SZXCとスペース、P2:/789と+のようにする必要がありました。事前に知っておくのは本当に良いことです。

于 2012-05-17T19:32:55.540 に答える