私は、ATLを使用してCOMコンポーネントを作成しようとしています。私はVBクライアントのイベントを発生させたいと思います。私は数多くのチュートリアルを見つけました。これらのチュートリアルはすべて細部に変化しているようですが、いずれも実用的なソリューションを生み出すことはできません。ATL接続ポイントが正常に動作しない
を(のVisual Studio 2008を使用して)::ここで私がやっているものです
- 新しいATL DLLプロジェクトを作成します。私はそれを
ATLEventTest
と呼んだ。 - クラスビュー:右クリックして
ATLEventTest
をクリックし、新しいATLシンプルオブジェクトクラスを追加しました。 は、私はこのオブジェクトを使用して作成された ...など、
IMyObject
、CMyObject
を生成した、このMyObject
と呼ばれる: BスレA)アパートメント)集約 c)のデュアルインタフェース D) 電子ISupportErrorInfo)の接続ポイントを右
CProxy_IMyObjectEvents<T>
をクリックし、「機能の追加」をクリック- 機能は
someEvent
という名前の空の戻り値の型のものである、とint testParam
を取ります。 - リビルド。
(この時点で、どこかの 'Implementing Connection Point'を見ることができるはずです。) - 右クリックして
CMyObject
をクリックしてください。 '接続ポイントを追加' - '
_IMyObjectEvents
'をリストに移動しました。 - 私の解決策でコード検索を行いました。どこでも
someEvent
が見つかりません! someEvent
機能を再度追加しました。今、それはATLEventTest_i.hにあります- 私のコードで
fire_someEvent(...)
を呼び出すことができるはずですができません。
これは私がこのことをうまくやってくれているように私を駆り立てています。誰かが私が間違っていることを見ることができれば、私は訂正、ヒント、ハッキングなどの訂正、ヒント、ハッキングなどを感謝します。
この時点で、私はウィザードをねじ込み、 IDL直接、私は:(はるかに良い公平ではないかもしれない感じを持っている
ATLなしでこれを行うことを個人的にお勧めします。ここでは、ActiveXコントロールとJavaScriptでこれを行う方法について書きました。インターフェースとコンセプトは本質的に同じです。 http://jeffcode.blogspot.com/2008/02/how-to-create-activex-control-that.html –