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
Ortak Oluşturucusu
Ad |
Description |
---|---|
Yapıları bir CConnectionPoint nesnesi. |
Public yöntemler
Ad |
Description |
---|---|
Tüm bağlantı noktalarını bağlantı Haritası'nda alır. |
|
Bağlantı haritası sahip olan denetim kabı alır. |
|
Bir bağlantı noktası arabirim kimliği alır. |
|
Bağlantı noktaları bir denetim tarafından desteklenen en fazla sayısını alır. |
|
Bağlantı öğeye bir işaretçi alır pos. |
|
Harita yineleme döndürerek başlar bir konumu için geçirilen değer bir GetNextConnection çağrısı. |
|
Oluşturma veya bağlantılarını keserek çerçevesi olarak adlandırılır. |
|
İ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
CConnectionPoint
Gereksinimler
Başlık: afxdisp.h