Aracılığıyla paylaş


CConnectionPoint Sınıfı

"Bağlantı noktası" olarak adlandırılan diğer OLE nesneleriyle iletişim kurmak için kullanılan özel bir arabirim türünü tanımlar.

Sözdizimi

class CConnectionPoint : public CCmdTarget

Üyeler

Ortak Oluşturucular

Veri Akışı Adı Açıklama
CConnectionPoint::CConnectionPoint Bir CConnectionPoint nesne oluşturur.

Genel Yöntemler

Veri Akışı Adı Açıklama
CConnectionPoint::GetConnections Bağlantı haritasındaki tüm bağlantı noktalarını alır.
CConnectionPoint::GetContainer Bağlantı eşlemesinin sahibi olan denetimin kapsayıcısını alır.
CConnectionPoint::GetIID Bağlantı noktasının arabirim kimliğini alır.
CConnectionPoint::GetMaxConnections Bir denetim tarafından desteklenen en fazla bağlantı noktası sayısını alır.
CConnectionPoint::GetNextConnection Pos'taki bağlantı öğesinin işaretçisini alır.
CConnectionPoint::GetStartPosition Bir çağrıya geçirilebilen position değerini döndürerek bir GetNextConnection eşleme yinelemesi başlatır.
CConnectionPoint::OnAdvise Bağlantılar kurulurken veya kesildiğinde çerçeve tarafından çağrılır.
CConnectionPoint::QuerySinkInterface İstenen havuz arabirimine yönelik bir işaretçi alır.

Açıklamalar

Bir OLE denetiminin işlevselliğini uygulamak ve kullanıma açmak için kullanılan normal OLE arabirimlerinden farklı olarak, bağlantı noktası olayları tetikleme ve bildirimleri değiştirme gibi diğer nesneler üzerinde eylemler başlatabilen bir giden arabirim uygular.

Bir bağlantı iki bölümden oluşur: "kaynak" olarak adlandırılan arabirimi çağıran nesne ve "havuz" olarak adlandırılan arabirimi uygulayan nesne. Kaynak, bir bağlantı noktasını ortaya çıkartarak havuzların kendisine bağlantı kurmasına olanak tanır. Bağlantı noktası mekanizması aracılığıyla bir kaynak nesne, havuzun bir üye işlevleri kümesini uygulamasına yönelik bir işaretçi alır. Örneğin, havuz tarafından uygulanan bir olayı tetiklerken kaynak, havuz uygulamasının uygun yöntemini çağırabilir.

Varsayılan olarak, türetilmiş bir COleControlsınıf iki bağlantı noktası uygular: biri olaylar ve biri özellik değişikliği bildirimleri için. Bu bağlantılar sırasıyla olay tetiklenmesi ve bir özellik değeri değiştiğinde havuza (örneğin, denetimin kapsayıcısı) bildirimde bulunılması için kullanılır. Ek bağlantı noktaları uygulamak için OLE denetimleri için de destek sağlanır. Denetim sınıfınızda uygulanan her ek bağlantı noktası için, bağlantı noktasını uygulayan bir "bağlantı bölümü" bildirmeniz gerekir. Bir veya daha fazla bağlantı noktası uygularsanız, denetim sınıfınızda tek bir "bağlantı eşlemesi" de bildirmeniz gerekir.

Aşağıdaki örnekte, ole denetimi için Sample basit bir bağlantı eşlemesi ve iki kod parçasından oluşan bir bağlantı noktası gösterilmektedir: birinci bölüm bağlantı eşlemesini ve noktasını bildirir; ikincisi bu eşlemeyi ve noktayı uygular. İlk parça, denetim sınıfının bildirimine, bölümünün altına protected eklenir:

// 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ı, XSampleConnPt bu belirli bağlantı noktasını uygulayan bir katıştırılmış sınıf (türetilen CConnectionPoint) bildirir. Herhangi bir CConnectionPoint üye işlevini geçersiz kılmak veya kendi üye işlevlerinizi eklemek istiyorsanız, bunları bu iki makro arasında bildirin. Örneğin, CONNECTION_IID makro bu iki makro arasına CConnectionPoint::GetIID yerleştirildiğinde üye işlevini geçersiz kılar.

İkinci kod parçası uygulama dosyasına ( eklenir. CPP) öğesini seçin. Bu kod, ek bağlantı noktasını SampleConnPtiçeren bağlantı eşlemesini uygular:

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

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

Bağlantı noktaları genellikle aynı arabirime bağlı birden çok havuza yayın yapabilme özelliği olan "çok noktaya yayını" destekler. Aşağıdaki kod parçası, bir bağlantı noktasındaki her havuz arasında yineleme yaparak çok noktaya yayın gerçekleştirmeyi gösterir:

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, bağlantı CConnectionPoint::GetConnectionsnoktasında çağrısıyla SampleConnPt geçerli bağlantı kümesini alır. Ardından bağlantılar üzerinden yinelenir ve her etkin bağlantıda çağrılar ISampleSink::SinkFunc olur.

kullanma CConnectionPointhakkında daha fazla bilgi için Bağlantı Noktaları makalesine bakın.

Devralma Hiyerarşisi

CObject

CCmdTarget

CConnectionPoint

Gereksinimler

Üst bilgi: afxdisp.h

CConnectionPoint::CConnectionPoint

Bir CConnectionPoint nesne oluşturur.

CConnectionPoint();

CConnectionPoint::GetConnections

Bir bağlantı noktası için tüm etkin bağlantıları almak için bu işlevi çağır.

const CPtrArray* GetConnections();

Dönüş Değeri

Etkin bağlantı dizisine (havuzlar) yönelik bir işaretçi. Dizideki işaretçilerden bazıları NULL olabilir. Bu dizideki NULL olmayan her işaretçi, dönüştürme işleci kullanılarak güvenli bir şekilde havuz arabirimine bir işaretçiye dönüştürülebilir.

CConnectionPoint::GetContainer

Bağlantı noktası için öğesini almak IConnectionPointContainer üzere çerçeve tarafından çağrılır.

virtual LPCONNECTIONPOINTCONTAINER GetContainer();

Dönüş Değeri

Başarılı olursa kapsayıcının işaretçisi; aksi takdirde NULL.

Açıklamalar

Bu işlev genellikle BEGIN_CONNECTION_PART makro tarafından uygulanır.

CConnectionPoint::GetIID

Bir bağlantı noktasının arabirim kimliğini almak için çerçeve tarafından çağrılır.

virtual REFIID GetIID() = 0;

Dönüş Değeri

Bağlantı noktasının arabirim kimliğine başvuru.

Açıklamalar

Bu bağlantı noktasının arabirim kimliğini döndürmek için bu işlevi geçersiz kılın.

CConnectionPoint::GetMaxConnections

Bağlantı noktası tarafından desteklenen en fazla bağlantı sayısını almak için çerçeve tarafından çağrılır.

virtual int GetMaxConnections();

Dönüş Değeri

Denetim tarafından desteklenen en fazla bağlantı sayısı veya sınır yoksa -1.

Açıklamalar

Varsayılan uygulama, sınır olmadığını gösteren -1 döndürür.

Denetiminize bağlanabilecek havuz sayısını sınırlamak istiyorsanız bu işlevi geçersiz kılın.

CConnectionPoint::GetNextConnection

Pos'taki bağlantı öğesinin işaretçisini alır.

LPUNKNOWN GetNextConnection(POSITION& pos) const;

Parametreler

Pos
Önceki GetNextConnection veya GetStartPosition çağrısı tarafından döndürülen POSITION değerine başvuru belirtir.

Dönüş Değeri

Pos veya NULL ile belirtilen bağlantı öğesinin işaretçisi.

Açıklamalar

Bu işlev en çok bağlantı haritasındaki tüm öğeler arasında yineleme yapmak için kullanışlıdır. Yinelenirken, bu işlevden döndürülen TÜM NUL'leri atlayın.

Örnek

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::GetStartPosition

GetNextConnection çağrısına geçirilebilen bir POSITION değeri döndürerek eşleme yinelemesi başlatır.

POSITION GetStartPosition() const;

Dönüş Değeri

Eşlemeyi yinelemek için başlangıç konumunu gösteren POSITION değeri; veya eşlem boşsa NULL.

Açıklamalar

Yineleme sırası tahmin edilebilir değildir; bu nedenle, "haritadaki ilk öğe" özel bir öneme sahip değildir.

Örnek

CConnectionPoint::GetNextConnection örneğine bakın.

CConnectionPoint::OnAdvise

Bağlantı kurulurken veya kesildiğinde çerçeve tarafından çağrılır.

virtual void OnAdvise(BOOL bAdvise);

Parametreler

bVise ekle
DOĞRU, bir bağlantı kuruluyorsa; aksi takdirde YANLIŞ.

Açıklamalar

Varsayılan uygulama hiçbir şey yapmaz.

Havuzlar bağlantı noktanıza bağlandığında veya bağlantınızın kesildiğinde bildirim almak istiyorsanız bu işlevi geçersiz kılın.

CConnectionPoint::QuerySinkInterface

İstenen havuz arabirimine yönelik bir işaretçi alır.

virtual HRESULT QuerySinkInterface(
    LPUNKNOWN pUnkSink,
    void** ppInterface);

Parametreler

pUnkSink
İstenen havuz arabiriminin tanımlayıcısı.

ppInterface
pUnkSink tarafından tanımlanan arabirim işaretçisinin işaretçisi. Nesne bu arabirimi desteklemiyorsa, * ppInterface NULL olarak ayarlanır.

Dönüş Değeri

Standart bir HRESULT değeri.

Ayrıca bkz.

CCmdTarget Sınıfı
Hiyerarşi Grafiği