2016-09-26 16 views
-1

私はOn_Commandハンドラを使用していますが、別の機能ではリターンキーとエスケープキーを特に使いたいと考えています。私がちょっと殴られたので、どうやってそれをするのか理解してください。ありがとう。 これは私がこれまでにON_COMMAND(IDC_CALC, &CALC::OnGlobalCALC)onCommandハンドラでエスケープキーと戻りキーを処理する方法>

やっていることで、ハンドラが

void CALC::OnGlobalCALC() 
{ 
    //Please suggest what to code here 
}; 
+1

詳細をご記入ください。コマンドハンドラ内のユーザ入力(キーボード)を読みたいですか? –

答えて

0

キーボード入力は通常、WM_KEYDOWN(は、OnKeyDown)メッセージを介して送信されています。したがって、CViewまたはCFrameWndを持っている場合は、それらを処理できます。

しかし、このメッセージはフォーカスのあるウィンドウにのみ送信されます。

EnterとEscapeがアプリケーションでグローバル機能を持​​つ場合、アクセラレータテーブルを割り当てて使用できます。この場合、入力またはエスケープはアクセラレータ(通常はPreTranslateMessage)によって処理され、WM_COMMANDメッセージに変換されます。

しかし、あなたが望み、必要とするのは、あなたが本当に望むものとあなたが持つどのような種類のものかに大きく依存しています。

+0

WM_KEYDOWNは間違ったメッセージです。興味のあるキーの組み合わせを特定するためには、かなり単純なステートマシンを実装する必要があります。アクセラレータを使用することは本当に簡単であり、コードを必要としません(もちろんPreTranslateMessageではありません)。あなたは正しいですが、問題は、教育的な勧告を行うにはあまりにも漠然とした**道**です。 – IInspectable

関連する問題