Aracılığıyla paylaş


CConnectionPoint sınıfı

Özel türde bir "bağlantı noktası" olarak adlandırılan diğer ole nesneleri ile iletişim kurmak için kullanılan arabirim tanımlar

class CConnectionPoint : public CCmdTarget

Üyeler

600taxa7.collapse_all(tr-tr,VS.110).gifOrtak Oluşturucusu

Ad

Description

CConnectionPoint::CConnectionPoint

Yapıları bir CConnectionPoint nesnesi.

600taxa7.collapse_all(tr-tr,VS.110).gifPublic yöntemler

Ad

Description

CConnectionPoint::GetConnections

Tüm bağlantı noktalarını bağlantı Haritası'nda alır.

CConnectionPoint::GetContainer

Bağlantı haritası sahip olan denetim kabı alır.

CConnectionPoint::GetIID

Bir bağlantı noktası arabirim kimliği alır.

CConnectionPoint::GetMaxConnections

Bağlantı noktaları bir denetim tarafından desteklenen en fazla sayısını alır.

CConnectionPoint::GetNextConnection

Bağlantı öğeye bir işaretçi alır pos.

CConnectionPoint::GetStartPosition

Harita yineleme döndürerek başlar bir konumu için geçirilen değer bir GetNextConnection çağrısı.

CConnectionPoint::OnAdvise

Oluşturma veya bağlantılarını keserek çerçevesi olarak adlandırılır.

CConnectionPoint::QuerySinkInterface

İstenen havuz arabirimi için bir işaretçi alır.

Notlar

Uygulamak ve bir ole denetimi işlevini göstermek için kullanılan normal ole arabirimleri, bir bağlantı noktası tetikleme olayları gibi diğer nesneleri eylemleri başlatmak ve bildirimleri değiştirme olanağınız giden bir arabirim sunar.

Bağlantı iki parçadan oluşur: "kaynak" ve arabirim uygulama nesnesi adı verilen arabirim çağırma nesnesi adında "havuz." Bir bağlantı noktası oluşturarak, bir kaynak havuzlarını kendisine bağlantıları kurmak izin verir.Bağlantı noktası mekanizması kaynak nesnenin üye işlevler kümesi sink's uygulanması için bir işaretçi alır.Örneğin, bir olay havuzu tarafından uygulanan baþlatmak için kaynak uygulama havuzu 's uygun yöntemini çağırabilir.

Varsayılan olarak, bir COleControl-türetilmiş bir sınıf uygulayan iki bağlantı noktaları: olaylar için bir tane ve bir özellik için değişiklik bildirimleri.Bu bağlantılar kullanılır, sırasıyla sink (örneğin, denetimin kapsayıcı) ne zaman bilgilendirme ve olayý için bir özellik değeri değişti.Destek ole denetimleri ek bağlantı noktalarına uygulamak de sağlanır.Denetim sınıfta uygulanan her ek bağlantı noktası için bağlantı noktası uygulayan bir "bağlantı bölümü" bildirmeniz gerekir.Bir veya daha fazla bağlantı noktalarını kullanmaya karar verirseniz, tek bir denetim sınıfı "bağlantı haritası" bildirmeniz gerekir.

Aşağıdaki örnek, basit bağlantı haritası ve tek bir bağlantı noktasını gösterir Sample oluşan iki kod parçalarına ole denetimi: bağlantı haritası ve nokta; ilk bölümü bildirir İkincisi, bu harita ve nokta uygular.İlk parça altında denetim sınıfı bildiriminde eklenen protected bölümü:

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

 DECLARE_CONNECTION_MAP()

BEGIN_CONNECTION_PART Ve END_CONNECTION_PART makrolar katıştırılmış bir sınıf bildirmek XSampleConnPt (türetilen CConnectionPoint), bu belirli bağlantı noktası uygular.Herhangi bir geçersiz kılmak istiyorsanız, CConnectionPoint üye işlevler veya kendi üye işlevler eklemek için bu iki makroları bildirin.Örneğin, CONNECTION_IID makro geçersiz kılar CConnectionPoint::GetIID bu iki makroları yerleştirildiğinde üye işlevi.

İkinci kod parçası uygulama dosyasına eklenir (.cpp) denetim sınıfı.Bu kod, ek bağlantı noktası'nı içeren bağlantı haritası uygulayan SampleConnPt:

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

Bu kod parçaları ekledikten sonra örnek ole denetimi için bir bağlantı noktası gösteriyor ISampleSink arabirimi.

Genellikle, bağlantı noktaları "aynı arabirime bağlı birden fazla havuzlarını yayın yeteneği olan", destekleyeceklerine.Aşağıdaki kod parçası, her havuz bağlantı noktası üzerinde yineleme tarafından çok noktaya yayını gerçekleştirmek gösterilmiştir:

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

Bu örnek, geçerli bağlantılar kümesi alır SampleConnPt bağlantı noktası için bir çağrı ile CConnectionPoint::GetConnections.Daha sonra bağlantıları ve çağrıları dolaşır ISampleSink::SinkFunc her etkin bağlantı.

Daha fazla bilgi için CConnectionPoint, makaleye bakın Bağlantı noktalarını.

Devralma hiyerarşisi

CObject

CCmdTarget

CConnectionPoint

Gereksinimler

Başlık: afxdisp.h

Ayrıca bkz.

Başvuru

CCmdTarget sınıfı

Hiyerarşi grafik