Aracılığıyla paylaş


Bildirimleri Destekleme

Sağlayıcı ve Tüketicide Bağlantı Noktası Arabirimleri Uygulama

Bildirimleri uygulamak için bir sağlayıcı sınıfının IRowsetNotifyCP ve IConnectionPointContainer'dan devralması gerekir.

IRowsetNotifyCP, IRowsetNotify bağlantı noktası arabirimi için sağlayıcı sitesini uygular. IRowsetNotifyCP , dinleyicilere satır kümesinin içeriğinde yapılan değişikliklerin bağlantı noktasında IID_IRowsetNotify öneride bulunan yayın işlevlerini uygular.

Ayrıca, tüketicinin bildirimleri işleyebilmesi için IRowsetNotifyImpl kullanarak tüketiciye (havuz olarak da bilinir) uygulamanız ve kaydetmeniz IRowsetNotify gerekir. Tüketicide bağlantı noktası arabirimini uygulama hakkında bilgi için bkz . Bildirimleri Alma.

Ayrıca, sınıfın bağlantı noktası girişini tanımlayan bir eşlemesi olmalıdır, örneğin:

BEGIN_CONNECTION_POINT_MAP
   CONNECTIONPOINT_ENTRY (IID_IRowsetNotify)
END_CONNECTION_POINT_MAP

IRowsetNotify Ekleme

eklemek IRowsetNotifyiçin devralma zincirinize ve IRowsetNotifyCP<rowset-name> eklemeniz IConnectionPointContainerImpl<rowset-name> gerekir.

Örneğin, UpdatePV'de devralma RUpdateRowset zinciri aşağıda verilmiştir:

Not

Örnek kod, burada listelenenlerden farklı olabilir; örnek kodu daha güncel bir sürüm olarak görmelisinsiniz.

///////////////////////////////////////////////////////////////////////////
// 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 Girdilerini Ayarlama

Satır kümenizdeki COM eşlemesine aşağıdakileri de eklemeniz gerekir:

COM_INTERFACE_ENTRY(IConnectionPointContainer)
COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)

Bu makrolar, bağlantı noktası kapsayıcınızı çağıran QueryInterface herkesin (temeli IRowsetNotify) sağlayıcınızda istenen arabirimi bulmasına olanak sağlar. Bağlantı noktalarının nasıl kullanılacağına ilişkin bir örnek için ATL POLYGON örneğine ve öğreticisine bakın.

Bağlantı Noktası Eşleme Girdilerini Ayarlama

Ayrıca bir bağlantı noktası haritası da eklemeniz gerekir. Şunun gibi görünmelidir:

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

Bu bağlantı noktası haritası, arabirimi arayan bir bileşenin IRowsetNotify bunu sağlayıcınızda bulmasını sağlar.

Özellikleri Ayarlama

Aşağıdaki özellikleri de sağlayıcınıza eklemeniz gerekir. Yalnızca desteklediğiniz arabirimleri temel alan özellikler eklemeniz gerekir.

Özellik Destekliyorsanız ekle
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

Bildirimler için uygulamanın çoğu OLE DB Sağlayıcı Şablonlarına zaten eklenmiş durumdadır. Devralma zincirinize eklemezseniz IRowsetNotifyCP , derleyici tüm bu kodu derleme akışınızdan kaldırır ve böylece kod boyutunuzu küçültür.

Ayrıca bkz.

Gelişmiş Sağlayıcı Teknikleri