Aracılığıyla paylaş


Bildirimleri Destekleme

Sağlayıcı ve Tüketici'de Bağlantı Noktası Arabirimi Uygulama

Uyarıları uygulamak için sağlayıcı sınıfın IRowsetNotifyCP ve IConnectionPointContainer öğelerinden devralması gerekir.

IRowsetNotifyCP, IRowsetNotify bağlanma noktası arabirimi için sağlayıcı sitesi uygular. IRowsetNotifyCP, IID_IRowsetNotify bağlanma noktasındaki dinleyicileri satır kümesinin içeriğindeki değişiklikler konusunda bilgilendirmek için yayın işlevleri uygular.

Ayrıca, tüketicinin tüm bildirimleri ele alabilmesi için tüketicide (havuz olarak da bilinir) IRowsetNotifyImpl kullanarak IRowsetNotify uygulamanız ve kaydettirmeniz gerektiğini unutmayın. Tüketici üzerinde bağlantı noktası arabirimi uygulama hakkında bilgi için bkz. Bildirimleri Alma.

Ayrıca, sınıf, bağlantı noktası girişini tanımlayan şöyle bir harita da içermelidir:

BEGIN_CONNECTION_POINT_MAP
   CONNECTIONPOINT_ENTRY (IID_IRowsetNotify)
END_CONNECTION_POINT_MAP

IRowsetNotify Ekleme

IRowsetNotify öğesini eklemek için, kalıtım zincirinize IConnectionPointContainerImpl<rowset-name> ve IRowsetNotifyCP<rowset-name> öğelerini eklemeniz gerekir.

Örneğin, işte UpdatePV içindeki RUpdateRowset için kalıtım zinciri:

Not

Örnek kod, burada listelenenlerden farklı olabilir; örnek kodu daha çok güncel sürüm olarak göz önüne almalısınız.

///////////////////////////////////////////////////////////////////////////
// class RUpdateRowset (in rowset.h)

class RUpdateRowset : 
public CRowsetImpl< RUpdateRowset, CAgentMan, CUpdateCommand, 
         CAtlArray< CAgentMan, CAtlArray<CAgentMan> >, CSimpleRow, 
         IRowsetScrollImpl< RUpdateRowset, IRowsetScroll > >,
      public IRowsetUpdateImpl< RUpdateRowset, CAgentMan >,
      public IConnectionPointContainerImpl<RUpdateRowset>,
      public IRowsetNotifyCP<RUpdateRowset>

COM Eşleme Girişlerini Ayarlama

Ayrıca satır kümenizdeki COM eşlemesine şunu eklemeniz gerekir:

COM_INTERFACE_ENTRY(IConnectionPointContainer)
COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)

Bu makrolar, sağlayıcıdaki istenen arabirimi bulmak için bağlantı noktası kapsayıcısına (IRowsetNotify öğesinin temeli) ilişkin QueryInterface öğesini çağıran herkese izin verir. Bağlantı noktalarının nasıl kullanılacağına yönelik bir örnek için bkz. ATL POLYGON örneği ve öğreticisi.

Bağlantı Noktası Eşleme Girişlerini Ayarlama

Ayrıca bir bağlantı noktası eşlemesi de eklemeniz gerekir. Şunun gibi görünmesi gerekir:

BEGIN_CONNECTION_POINT_MAP(rowset-name)
     CONNECTION_POINT_ENTRY(_uuidof(IRowsetNotify))
END_CONNECTION_POINT_MAP()

Bu bağlantı noktası eşlemesi sağlayıcıda bulmak için IRowsetNotify arabirimini aramaya ilişkin bir bileşene izin verir.

Özellikleri Ayarlama

Ayrıca sağlayıcınıza şu özellikleri de eklemeniz gerekir. Yalnızca desteklediğiniz arabirimlere dayalı özellikler eklemeniz gerekir.

Özellik

Destekliyorsanız ekleyin

DBPROP_IConnectionPointContainer

Her zaman

DBPROP_NOTIFICATIONGRANULARITY

Her zaman

DBPROP_NOTIFICATIONPHASES

Her zaman

DBPROP_NOTIFYCOLUMNSET

IRowsetChange

DBPROP_NOTIFYROWDELETE

IRowsetChange

DBPROP_NOTIFYROWINSERT

IRowsetChange

DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE

Her zaman

DBPROP_NOTIFYROWFIRSTCHANGE

IRowsetUpdate

DBPROP_NOTIFYROWSETRELEASE

Her zaman

DBPROP_NOTIFYROWUNDOCHANGE

IRowsetUpdate

DBPROP_NOTIFYROWUNDODELETE

IRowsetUpdate

DBPROP_NOTIFYROWUNDOINSERT

IRowsetUpdate

DBPROP_NOTIFYROWUPDATE

IRowsetUpdate

Bildirim uygulamalarının çoğu, OLE DB Sağlayıcı Şablonlarına önceden katıştırılmış durumdadır. Visual C++ .NET üzerindeki derleyici özelliği dolayısıyla, IRowsetNotifyCP devralma zincirine eklenmezse, derleyici kodun tamamını derleme akışınızdan kaldırır, bu da kodunuzun boyutunu küçültür.

Ayrıca bkz.

Kavramlar

Gelişmiş Sağlayıcı Teknikleri