Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.