2012-03-09 9 views
7

通常、Altキーを押すとWindowsのメニューが開きます。Altキーの通常の動作を無効にする方法は?

アプリケーションでAltキーが必要なので、これを無効にする必要があります。 (古いコンピュータのエミュレータなので、その動作を模倣する必要があります)純粋なWindows APIで書いているので、送信され、無効にしたり、破棄したり無視したりする必要のあるメッセージがあるはずです。

Alt + Tabは他のシステムキーやキーの組み合わせと同様に問題はありません。メニューを開くときにAltキーを無視するだけです。

(それがうまく機能して私のアプリケーションは、キーを読み取るためにDirectInputのを使用しています。私はAltキーでメニューを開く機能を無効にする必要があります。私は、マウスを使用してメニューを開きます。)

+0

どのメニューですか?私はWindowsのボックスにAltキーを押しただけでメニューは表示されませんでした。 – Kaz

+1

@ Kaz:フォーカスされたウィンドウのメニューバーにフォーカスを設定します。 –

答えて

10

どのようにチェックについてWM_SYSCOMMANDの場合、wParamがSC_KEYMENUの場合、0を返します。

更新/厳密解:

if(wParam==SC_KEYMENU && (lParam>>16)<=0) return 0; 
return DefWindowProc(hwnd, message, wParam, lParam); 

説明:それは、ゼロまたは負のは、メニューがAltキーまたはAltキー+何かによって活性化されるときlParam>>16は、メニューがマウスによって活性化され、その後正の場合。

+0

これにより、適切な解決策を見つける手助けをしました。私はこの答えに解決策を加えました。 –

+0

私を助けました。この問題は非常にひどかったので、Windows 8のAltキーと他のいくつかのキーは、Win32アプリケーションと絶えず混乱しています。また、小さな記述のおかげで、より明確になっていることを理解することができます。 lParamやwParamが私のニーズにあまり使われていなかったので、以前は何が使われているのか分かりませんでした。 –

関連する問題