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

Ad Tanım
C Bağlan ionPoint::C Bağlan ionPoint Bir CConnectionPoint nesne oluşturur.

Genel Yöntemler

Ad Tanım
C Bağlan ionPoint::Get Bağlan ions Bağlantı haritasındaki tüm bağlantı noktalarını alır.
C Bağlan ionPoint::GetContainer Bağlantı eşlemesinin sahibi olan denetimin kapsayıcısını alır.
C Bağlan ionPoint::GetIID Bağlantı noktasının arabirim kimliğini alır.
C Bağlan ionPoint::GetMax Bağlan ions Bir denetim tarafından desteklenen en fazla bağlantı noktası sayısını alır.
C Bağlan ionPoint::GetNext Bağlan ion Pos'taki bağlantı öğesinin işaretçisini alır.
C Bağlan ionPoint::GetStartPosition Bir çağrıya geçirilebilen position değerini döndürerek bir GetNextConnection eşleme yinelemesi başlatır.
C Bağlan ionPoint::OnAdvise Bağlantılar kurulurken veya kesildiğinde çerçeve tarafından çağrılır.
C Bağlan ionPoint::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ğlan Noktaları makalesine bakın.

Devralma Hiyerarşisi

Cobject

Ccmdtarget

CConnectionPoint

Gereksinimler

Üst bilgi: afxdisp.h

C Bağlan ionPoint::C Bağlan ionPoint

Bir CConnectionPoint nesne oluşturur.

CConnectionPoint();

C Bağlan ionPoint::Get Bağlan ions

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

const CPtrArray* GetConnections();

İade 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.

C Bağlan ionPoint::GetContainer

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

virtual LPCONNECTIONPOINTCONTAINER GetContainer();

İade 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.

C Bağlan ionPoint::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;

İade 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.

C Bağlan ionPoint::GetMax Bağlan ions

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();

İade 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.

C Bağlan ionPoint::GetNext Bağlan ion

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.

İade 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();
      }
   }
}

C Bağlan ionPoint::GetStartPosition

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

POSITION GetStartPosition() const;

İade 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

C Bağlan ionPoint::GetNext Bağlan ion örneğine bakın.

C Bağlan ionPoint::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.

C Bağlan ionPoint::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.

İade Değeri

Standart bir HRESULT değeri.

Ayrıca bkz.

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