ActiveXについて


VC悩んだ人  2004-01-09 13:35:32  No: 53001  IP: [192.*.*.*]

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()が呼び出せますか。

以上です。
ご存知の方がいれば、ぜひ教えていただきます。
宜しくお願い致します。

編集 削除
...  2004-01-10 19:37:32  No: 53002  IP: [192.*.*.*]

うまくいくか試していませんが、OCX側の
PreTranslateMessageあたりで、WM_KEYDOWNを拾って
VK_SPACEかVK_RETURNだったらSendMessageでクリック
動作(WM_LBUTTONDOWN,WM_LBUTTONUP)を送信して
あげるとか。。。

#もし動いても正しい処理方法ではないかもしれません。。
#動くかどうかを含めて、自信度3%未満です。

MFCでいいんですよね?
環境は書いたほうがよいかと。

編集 削除
VC悩んだ人  2004-01-13 14:45:32  No: 53003  IP: [192.*.*.*]

有難う御座います。
私はodlファイルにDoClick()メソッドを追加し、MyCtrl.cppにKEY_DOWNとKEY_UPメソッドにDoClick()を呼び出して、うまく動けました。

編集 削除