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.