2009-07-21 14 views
3

私はVC++ 6でATL/COMプロジェクトを持っています。イベントを発生させるために以前に定義されたことのない、既存のクラスが必要です。これを行うには、クラスは「接続ポイント」を実装する必要があります。VC++ 6に新しい接続ポイントを作成しますか?

これらのイベントは以前に発生したことのないタイプなので、既存のものを再利用するのではなく、新しい接続ポイントを作成する必要があります。

クラスを接続ポイントに実装する方法を知っています - クラスビューでクラスを右クリックし、「接続ポイントを実装」を選択し、表示されるリストから適切な接続ポイントを選択します。

私は新しいATLクラスに関連付けられている限り、新しい接続ポイントを作成する方法を知っています - クラスを作成するときに "サポート接続ポイント"をチェックしてください。

しかし、私は新しい接続ポイントを作成する方法を理解することができません。を実装する新しいATLクラスを作成することなく、これを行うことはできません。

は、私は、既存の接続ポイントの定義に似たものが含まれるようにIDLを変更した:

[ 
    uuid(*blah blah blah*), 
    helpstring("_IBlahEvents Interface") 
] 
dispinterface _IBlahEvents 
{ 
    properties: 
    methods: 
    [id(1), helpstring("method BlahChanged")] HRESULT BlahChanged(); 
}; 

(もちろん、私は本当のUUIDを持って、ない「何とか何とか何とか」)。

これを実行すると、_IBlahEventsインターフェイスがクラスビューに表示されます。しかし_IBlahEventsを実装するATLクラスを右クリックし、 "Implementing Connection Point"を選択すると、_IBlahEventsは既存の接続ポイントのリストに表示されません。

私はすべてのクリーニングと再構築を含む、再コンパイルしました。

私には何が欠けていますか?

ありがとうございました。

答えて

0

この基本クラスを追加しましたか?

public IConnectionPointContainerImpl<CYOUR_CLASS_HERE> 

これはそうでない場合は、「サポート接続ポイント」チェックボックスをオンにする以外は、このプロジェクトに一致する新しいプロジェクトを最初から作成します。

同じ名前を使用してください。次に、元のプロジェクトと比較して、何が欠けているかを確認します。

0

手動でIDLファイルを変更した場合は、この手順も手動で行う必要があります。 これは - コクラスに次のものを追加します:

[default, source] dispinterface _IBlahEvents; 
関連する問題