ATL を使用して COM コンポーネントを作成しようとしており、VB クライアントのイベントを発生させたいと考えています。多数のチュートリアルを見つけましたが、それらはすべて詳細が異なるようであり、実用的なソリューションを生成するものはありません。これが私がやっていることです:
(Visual Studio 2008 を使用):
- 新しい ATL DLL プロジェクトを作成します。私はそれを呼んだ
ATLEventTest
。 - クラス ビュー: を右クリックし
ATLEventTest
、新しい ATL シンプル オブジェクト クラスを追加しました。これを と呼び、 、 などMyObject
を生成しました...CMyObject
IMyObject
このオブジェクトは以下で作成されました: a) アパートメント スレッディング b) アグリゲーション c) デュアル インターフェイス d) ISupportErrorInfo e) 接続ポイント
を右クリックし
CProxy_IMyObjectEvents<T>
、「関数の追加」をクリックしました- 関数の戻り値の型は void で、名前
someEvent
は で、引数はint testParam
. - 再構築します。
(この時点で、どこかに「Implement Connection Point」が表示されるはずです。表示されません...) - を右クリックしました
CMyObject
。「接続ポイントを追加」 _IMyObjectEvents
' ' をリストに移動しました。- 私のソリューションでコード検索を行いました。
someEvent
どこにも見つからない! someEvent
機能を再度追加しました。現在は、ATLEventTest_i.h にあります。fire_someEvent(...)
私のコードを呼び出すことができるはずですが、できません。
これは、これを機能させようとして私を狂気に駆り立てています。誰かが私が間違っていることを見ることができれば、修正、ヒント、ハックなどをいただければ幸いです。
この時点で、私はウィザードを台無しにして、c++ と idl を直接変更しようとしているだけだと言いたくなりますが、それはそれほど良いことではないかもしれないと感じています :(