Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Implémentation d’interfaces de point de connexion sur le fournisseur et le consommateur
Pour implémenter des notifications, une classe de fournisseur doit hériter de IRowsetNotifyCP et IConnectionPointContainer.
IRowsetNotifyCP implémente le site fournisseur pour l’interface de point de connexion IRowsetNotify. IRowsetNotifyCP implémente des fonctions de diffusion pour conseiller les écouteurs sur le point IID_IRowsetNotify de connexion des modifications apportées au contenu de l’ensemble de lignes.
Vous devez également implémenter et inscrire IRowsetNotify sur le consommateur (également appelé récepteur) à l’aide de IRowsetNotifyImpl afin que le consommateur puisse gérer les notifications. Pour plus d’informations sur l’implémentation de l’interface de point de connexion sur le consommateur, consultez Réception de notifications.
En outre, la classe doit avoir une carte qui définit l’entrée de point de connexion, comme suit :
BEGIN_CONNECTION_POINT_MAP
CONNECTIONPOINT_ENTRY (IID_IRowsetNotify)
END_CONNECTION_POINT_MAP
Ajout d’IRowsetNotify
Pour ajouter IRowsetNotify, vous devez ajouter IConnectionPointContainerImpl<rowset-name> et IRowsetNotifyCP<rowset-name> à votre chaîne d’héritage.
Par exemple, voici la chaîne d’héritage pour RUpdateRowset UpdatePV :
Remarque
L’exemple de code peut différer de ce qui est répertorié ici. Considérez cet exemple de code comme la version la plus récente.
///////////////////////////////////////////////////////////////////////////
// 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>
Définition des entrées de mappage COM
Vous devez également ajouter les éléments suivants à la carte COM dans votre ensemble de lignes :
COM_INTERFACE_ENTRY(IConnectionPointContainer)
COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
Ces macros permettent à toute personne appelant QueryInterface votre conteneur de points de connexion (la base de ) de IRowsetNotifytrouver l’interface demandée sur votre fournisseur. Pour obtenir un exemple d’utilisation des points de connexion, consultez l’exemple et le didacticiel ATL POLYGON.
Définition des entrées de mappage de point de connexion
Vous devez également ajouter une carte de points de connexion. Il devrait ressembler à ceci :
BEGIN_CONNECTION_POINT_MAP(rowset-name)
CONNECTION_POINT_ENTRY(_uuidof(IRowsetNotify))
END_CONNECTION_POINT_MAP()
Ce mappage de points de connexion permet à un composant à la recherche de l’interface IRowsetNotify dans votre fournisseur.
Définition de propriétés
Vous devez également ajouter les propriétés suivantes à votre fournisseur. Vous devez uniquement ajouter des propriétés basées sur les interfaces que vous prenez en charge.
| Propriété | Ajouter si vous prenez en charge |
|---|---|
| DBPROP_IConnectionPointContainer | Toujours |
| DBPROP_NOTIFICATIONGRANULARITY | Toujours |
| DBPROP_NOTIFICATIONPHASES | Toujours |
| DBPROP_NOTIFYCOLUMNSET | IRowsetChange |
| DBPROP_NOTIFYROWDELETE | IRowsetChange |
| DBPROP_NOTIFYROWINSERT | IRowsetChange |
| DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE | Toujours |
| DBPROP_NOTIFYROWFIRSTCHANGE | IRowsetUpdate |
| DBPROP_NOTIFYROWSETRELEASE | Toujours |
| DBPROP_NOTIFYROWUNDOCHANGE | IRowsetUpdate |
| DBPROP_NOTIFYROWUNDODELETE | IRowsetUpdate |
| DBPROP_NOTIFYROWUNDOINSERT | IRowsetUpdate |
| DBPROP_NOTIFYROWUPDATE | IRowsetUpdate |
La plupart de l’implémentation des notifications est déjà incorporée dans les modèles de fournisseur OLE DB. Si vous n’ajoutez IRowsetNotifyCP pas à votre chaîne d’héritage, le compilateur supprime tout ce code de votre flux de compilation, ce qui réduit la taille de votre code.