VC++6.0でBUTTONのサブクラスとしてOCXを作って、イベントにOnClick()を追加しました。
VC++6.0でこのOCXを利用するアプリケーションを作って、OCXのOnClick()イベント関数にMessageBox("OCX_TEST","",MB_OK);を書きました。
実行すると、このOCXをマウスの左ボタンをクリックし、MessageBoxがうまく表示されましたが。このOCXにフォーカスを付いているとき、スペースバー(またはEnterキー)を押した時、何も反応しなかった、つまり、MessageBoxを表示しませんでした。
でも、VC++普通のボタンコントロールのOnClick()に同じソースを書くと、以下の三つ操作の結果は同じ(MessageBoxがうまく表示された)です。
1.マウスの左ボタンをクリックする
2.フォーカスを付いているとき、スペースバーを押す
3.フォーカスを付いているとき、Enterキーを押す
それで、質問はどうすれば、自分作ったOCXにスペースバー(またはEnterキー)を押すとき、OnClick()が呼び出せますか。
以上です。
ご存知の方がいれば、ぜひ教えていただきます。
宜しくお願い致します。
うまくいくか試していませんが、OCX側の
PreTranslateMessageあたりで、WM_KEYDOWNを拾って
VK_SPACEかVK_RETURNだったらSendMessageでクリック
動作(WM_LBUTTONDOWN,WM_LBUTTONUP)を送信して
あげるとか。。。
#もし動いても正しい処理方法ではないかもしれません。。
#動くかどうかを含めて、自信度3%未満です。
MFCでいいんですよね?
環境は書いたほうがよいかと。
有難う御座います。
私はodlファイルにDoClick()メソッドを追加し、MyCtrl.cppにKEY_DOWNとKEY_UPメソッドにDoClick()を呼び出して、うまく動けました。