CConnectionPoint

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. Uygulamak ve bir ole denetimi işlevselliğini sergilemek 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 arabirimi uygulayan.

Bağlantı iki bölümden oluşur: "kaynak" ve arabirimini uygulayan nesne adı verilen arabirim, çağıran nesneyle denilen "lavabo." Bir bağlantı noktası açarak, bir kaynağı kendine bağlantıları kurmak lavabo sağlar. Bağlantı noktası mekanizmayla kaynak nesnenin üye işlevleri kümesi sink's uygulanması için bir işaretçi alır. Örneğin, yangın havuzu tarafından uygulanan bir olayı için kaynak sink's uygulanması uygun yöntemi çağırabilirsiniz.

Varsayılan olarak, bir COleControl-türetilmiş sınıf uygulayan iki bağlantı noktaları: olayları diğeri özelliği değiştirme bildirimleri. Bu bağlantıların kullanıldığı, sırasıyla, olay firing ve bir lavabo (örneğin, denetimin konteyner) ne zaman bildiren bir özellik değeri değişti. Destek de ole denetimleri için ek bağlantı noktaları uygulanması sağlanır. Her ek bağlantı noktası denetim sınıfta uygulanan, "bağlantı noktası uygulayan bir bağlantı parçası" bildirmeniz gerekir. Bir veya daha fazla bağlantı noktaları uygularsanız, ayrıca tek bir "bağlantı göster" Denetim sınıfınızda bildirmeniz gerekir.

Basit bağlantı Haritası ve bir bağlantı noktası aşağıdaki örnekte gösterilmiştir Sample oluşan iki kod parçalarının ole denetimi: ilk bölüm noktası ve bağlantı göster bildirir; bu harita ve nokta ikinci uygular. İlk parça korumalı bir bölüm altında denetim sınıfı Bildirgesi eklenir

 nbsp;   / / Bağlantı noktası ISample arabirimi
    BEGI&N_CONNECTION_PART (CSampleCtrl, 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ın bildirimini XSampleConnPt ( CConnectionPointtüretilmiş), bu özel bağlantı noktasını uygular. Herhangi bir CConnectionPoint üye işlevlerini geçersiz kılmak veya kendi üye işlevler eklemek istiyorsanız, onları bu iki makroları bildirmek. Örneğin, bu iki makrolar arasında yerleştirildiğinde CConnectionPoint::GetIID üye işlev CONNECTION_IID makroyu geçersiz kılar.

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

BEGI&N_CONNECTION_MAP (CSampleCtrl, COleControl)
 nbsp;  CONNECTION_PART (CSampleCtrl, IID_ISampleSink, SampleConnPt)
END_CONNECTION_MAP()

Bu kod parçaları eklendikten sonra örnek ole denetimi ISampleSink arabirim için bir bağlantı noktası sunar.

Genellikle, bağlantı noktaları ""; destekleyeceklerine birden fazla lavabolar için yayın yeteneği aynı arabirime bağlı. Aşağıdaki kod bölümü her lavabonun üzerinde bir bağlantı noktası üzerinden iterating tarafından çok noktaya yayını gerçekleştirmek gösterilmiştir:

void CSampleCtrl::CallSinkFunc()
{
 nbsp;  Const CPtrArray * pConnections = m_xSampleConnPt.GetConnections();
    assert (pConnections! = null);

int cConnections = pConnections - > GetSize();
    ISampleSink * pSampleSink;
    for (int i = 0; i < cConnections; i ++)
    {
        pSampleSink = (ISampleSink *) (pConnections - > GetAt(i));
        assert (pSampleSink! = null);
        pSampleSink - > SinkFunc();
    }
}

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

CConnectionPointhakkında daha fazla bilgi için bkz: yazı Visual c++ programlama Kılavuzu Bağlantı noktaları.

# include lt;afxctl.h>

Sınıf üyeleri |nbsp; Temel sınıf | Hiyerarşi çizelgesi

Index