ActiveX DLL側フォームのイベントを親プログラム側でWithEventsするには?

解決


たくみ  2004-11-15 02:38:41  No: 86675  IP: [192.*.*.*]

VB6.0 SP5+XP Pro.の環境です。
ActiveXコントロールではなくあえてフォームを1つ持たせた
ActiveX DLLを作成し、そのフォームに付いているコマンドボタン
のクリックイベントを親プログラム(これもVB6)側でWithEvents
のようなニュアンスでイベント発生を認識させたいのです。
そもそも非フォームでのDB接続などのActiveX DLLでは普通に
イベントを取得できるのですが、フォームが付いている場合
どのような考え方をして良いかが正直わかっていないようです。
もちろんそのフォーム内のコマンドボタン_Click()に
ソースを書けば当然目的の動作はするのですが、
それだと本来のわざわざDLL化した意味がないような気もしますし
第一それだと汎用性がなくなってしまうので。
調べた限りではそのようなケースではActiveXコントロール化
すべきなのかも知れませんが理由あって上記のようにしたい次第です。
どうかご教授よろしくお願いいたします。

編集 削除
魔界の仮面弁士  2004-11-15 10:13:57  No: 86676  IP: [192.*.*.*]

> ActiveXコントロールではなくあえてフォームを1つ持たせた
> ActiveX DLLを作成し、そのフォームに付いているコマンドボタン
> のクリックイベントを親プログラム(これもVB6)側でWithEvents
> のようなニュアンスでイベント発生を認識させたいのです。

RaiseEventステートメントを使って、内部コマンドボタンがクリックされたときに、
独自のイベントを発行させるようにすれば良いと思います。

ヘルプ(MSDNライブラリ)の

 [Visual Studio 6.0 ドキュメント]
 └[Visual Basic ドキュメント]
   └[Visual Basic の使用方法]
     └[コンポーネント ツール ガイド]
       └[ActiveX コンポーネントの作成方法]
         └[ActiveX DLL の作成]

にあるチュートリアルを一通り試してみると、手順がわかるかと思います。

# フォームで発生したイベントを公開する方法に関しては、上記トピック内の
# [ThingDemo プロジェクトへのフォームの追加] あたりに記述があります。

編集 削除
たくみ  2004-11-15 14:14:04  No: 86677  IP: [192.*.*.*]

>魔界の仮面弁士さん
早速のご回答本当にありがとうございます。

>[ThingDemo プロジェクトへのフォームの追加] あたりに記述があります
あ、なるほどなるほど。
こんなメジャーなドキュメント(MSDNライブラリのこの事例)を見落として
いたなんてお恥ずかしい限りです。
早速自分のソースと照らし合わせてみます。

編集 削除