質問します。
[VC++6.0、WindowsXP]
CMainFrmにおいて、OnKeyDown()を準備したのですがキーを押下しても、とんできませ
ん。
もちろん、Viewクラスでは問題ありませんが、どうしても、OnKeyDown()をCMainFrmに置
く必要があるのです。
基本クラスのCWndクラスにはOnKeyDown()があるのですが....。
だれか、この理由および対処方法など、お教え願います。
View側OnKeyDownで受け取って
((CMainFrame*)AfxGetApp()->GetMainWnd())->OnKeyDown(nChar, nRepCnt, nFlags);
でいいんじゃないかな?
当然MainFrame側にも
OnKeyDown(nChar, nRepCnt, nFlags);
をpublicで実装するとして
bbです。
switchさんありがとうございます。
少し説明が足りませんでした。
追加説明をします。
本件のシステムでは、Viewクラスが30個ほどあり、今後も増える予定です。
この状態で、どのViewクラスにフォーカスがあたっている時でも、同じキー処理を
したいのです。したがってこのキー処理を1箇所で行いたいのです。
引き続き、よろしくお願いします。
PreTranslateMessageを使うという方法があります。
もしくは、ショートカットキーのようなものを実現したいのであれば、
アクセラレータを使う方法もあります。
>本件のシステムでは、Viewクラスが30個ほどあり、今後も増える予定です。
そういうことであれば、Kerryさんの書いたとおり
PreTranslateMessageでWM_KEYDOWNを捕まえるのが一番手っ取り早いと思います。
bbです。
Kerryさん
PreTranslateMessageを使い、思い通りにいきました。
どうもありがとうございました。