ActiveXについて


VC悩んだ人  2004-01-09 22:35:32  No: 53001

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-11 04:37:32  No: 53002

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

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

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


VC悩んだ人  2004-01-13 23:45:32  No: 53003

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加