次の方法で共有


CConnectionPoint クラス

他の OLE オブジェクトと通信するために使われる "コネクション ポイント" と呼ばれる特別な型のインターフェイスを定義します。

class CConnectionPoint : public CCmdTarget

メンバー

600taxa7.collapse_all(ja-jp,VS.110).gifパブリック コンストラクター

名前

説明

CConnectionPoint::CConnectionPoint

CConnectionPoint オブジェクトを構築します。

600taxa7.collapse_all(ja-jp,VS.110).gifパブリック メソッド

名前

説明

CConnectionPoint::GetConnections

コネクション マップのすべてのコネクション ポイントを取得します。

CConnectionPoint::GetContainer

コネクション マップを所有するコントロールのコンテナーを取得します。

CConnectionPoint::GetIID

コネクション ポイント インターフェイスの ID を取得します。

CConnectionPoint::GetMaxConnections

コントロールでサポートされているコネクション ポイントの最大数を取得します。

CConnectionPoint::GetNextConnection

posで接続要素へのポインターを取得します。

CConnectionPoint::GetStartPosition

GetNextConnection の呼び出しに渡すことができる POSITION の値を返すことでマップのイテレーションを開始します。

CConnectionPoint::OnAdvise

接続を確立するか、または中断するときに、フレームワークによって呼び出されます。

CConnectionPoint::QuerySinkInterface

要求されたシンク インターフェイスへのポインターを取得します。

解説

OLE コントロール、コネクション ポイントの実装の機能を実装し、公開するためにイベントおよびデリゲートの変更の通知など他のオブジェクトのアクションを開始、アウトゴーイング インターフェイス使用される通常の OLE インターフェイスとは異なり。

接続は 2 人の部分から構成されます: 「」、ソース インターフェイスとインターフェイスを実装するオブジェクトと呼ばれるインターフェイスを呼び出すオブジェクトは、「シンクを呼び出します」。コネクション ポイントを公開することで、ソースはシンクがそれ自体への接続を確立するようにします。コネクション ポイント機構を通じて、ソース オブジェクトはシンクの一連のメンバー関数の実装へのポインターを取得します。たとえば、シンクによって実装されたイベントを発生させるソースはシンクの実装のメソッドを呼び出すことができます。

既定では、COleControl派生クラスは 2 種類のコネクション ポイントを実装します: イベントの 1 とプロパティの変更通知の場合は 1。これらの接続はそれぞれ、イベントの発生にシンクと (たとえば、コントロールのコンテナー) を通知するためにプロパティ値が変更された場合は、が使用されます。サポートは、実装の追加のコネクション ポイントに OLE コントロールが提供されます。コントロールのクラスで実装されるする追加のコネクション ポイント用に実装するコネクション ポイント「パーツ」その接続を宣言する必要があります。一つ以上のコネクション ポイントを実装する場合、コントロール クラスの一つの「接続」マップを宣言する必要があります。

次の例では、コードの 2 種類のフラグメントで構成される Sample の OLE コントロールの単純なコネクション マップを 1 つのコネクション ポイントを示します: 最初の部分では、コネクション マップと位置を宣言します; 2 番目のマップとはこのポイントを実装します。最初の例では protected のセクションのコントロールのクラス宣言に、挿入:

// Connection point for ISample interface
 BEGIN_CONNECTION_PART(CMyClass, SampleConnPt)
     CONNECTION_IID(IID_ISampleSink)
 END_CONNECTION_PART(SampleConnPt)

 DECLARE_CONNECTION_MAP()

BEGIN_CONNECTION_PARTEND_CONNECTION_PART のマクロは、埋め込みクラス、その XSampleConnPt (から派生) を実装 CConnectionPointこの特定のコネクション ポイント宣言します。CConnectionPoint のメンバー関数をオーバーライドする場合、または独自のメンバー関数を追加すると、この二つのマクロの中で宣言します。たとえば、CONNECTION_IID のマクロは、この二つのマクロの間にある場合 CConnectionPoint::GetIID のメンバー関数をオーバーライドします。

2 番目のコード例では、コントロール クラスの実装ファイル (.cpp) に挿入されます。このコードは、追加のコネクション ポイントを含むコネクション マップ、SampleConnPt実行します:

BEGIN_CONNECTION_MAP(CMyClass, CCmdTarget)
    CONNECTION_PART(CMyClass, IID_ISampleSink, SampleConnPt)
END_CONNECTION_MAP()

これらのサンプル コードに挿入し、OLE コントロールは ISampleSink のインターフェイス用のコネクション ポイントを公開します。

通常、コネクション ポイントは、同じインターフェイスに接続される複数のシンクにブロードキャスト機能である「マルチキャスティング」をサポートしています。次のコードでは、コネクション ポイントの各シンクを反復処理して、マルチキャスティングを実行する方法を示します:

void CMyClass::CallSinkFunc()
{
    POSITION pos = m_xSampleConnPt.GetStartPosition();
    ISampleSink* pSampleSink;
    while( pos != NULL )
    {
        pSampleSink = (ISampleSink*)(m_xSampleConnPt.GetNextConnection(pos));
        if(pSampleSink != NULL)
            pSampleSink->SinkFunc();
    }
}

この例では CConnectionPoint::GetConnectionsへの呼び出しで SampleConnPt のコネクション ポイントの接続の現在のセットを取得します。これは、接続を介しておよび反復処理し、どのアクティブな接続の ISampleSink::SinkFunc を呼び出します。

CConnectionPointの使用の詳細については、" " [接続ポイント]を参照してください。

継承階層

CObject

CCmdTarget

CConnectionPoint

必要条件

ヘッダー : afxdisp.h

参照

関連項目

CCmdTarget クラス

階層図