Vous devez ajouter une fonction de gestionnaire d'événements pour le bouton exécuter , que vous avez créé dans le fichier de ressource de boîte de dialogue.
Pour créer un gestionnaire d'événements du bouton Run
CTRL et double-cliquez sur le bouton exécuter . La fonction CTestProvDlg::OnRun s'affiche dans une fenêtre source.Pour créer le gestionnaire d'événements, vous devez utiliser les classes de modèles du consommateur OLE DB suivants:
Chacune de ces classes correspond à un objet COM dans le fournisseur.
Ajoutez le code ci-dessous. Dans ce code de gestionnaire d'événements, l'objet CCommand prend une classe CProvider comme paramètre de modèle. Ce paramètre représente les liaisons utilisées par le fournisseur d'accès aux données.
///////////////////////////////////////////////////////////////////////
/ / TestProvDlg.cpp
VOID CTestProvDlg::OnRun()
{
CCommandlt ;CAccessor <CProvider> > Tableau ;
CDataSource source ;
CSession session ;
Si (source.Open("MyProvider.MyProvider.1", NULL)! = S_OK)
retour ;
Si (session.Open(source)! = S_OK)
retour ;
Si (voir le tableau.Ouvert (session, _T("c:\\public\\testprf2\\gloo.txt"))! = S_OK)
retour ;
alors que (voir le tableau.MoveNext() == S_OK)
{
m_ctlString1.AddString(table.szCommand) ;
m_ctlString2.AddString(table.szText) ;
}
}
Le gestionnaire d'événements utilise les trois appels ouverts , illustrés ci-dessous, qui correspondent aux trois objets COM dans le fournisseur. Il localise le fournisseur en utilisant son ProgID. Vous pouvez obtenir le ProgID du Registre système, ou par la recherche dans le fournisseur rgs fichier ( MyProvider.rgs pour le fournisseur simple illustré à la mise en œuvre de fournisseur Simple accessible en lecture seule). Le fournisseur ouvre un fichier texte nommé gloo.txt , qui contient un nombre pair de chaînes séparées par chariot renvoie. Open passe le chemin d'accès de fichier au fournisseur sous forme de chaîne de fournisseur.
si (source.Open("MyProvider.MyProvider.1", NULL)! = S_OK)
retour ;
Si (session.Open(source)! = S_OK)
retour ;
Si (voir le tableau.Ouvert (session, _T("c:\\public\\testprf2\\gloo.txt"))! = S_OK)
retour
Pour extraire les données, les appels du gestionnaire d'événements table.MoveNext , comme illustré ci-dessous. Quand il n'y a pas plus de lignes, le fournisseur renvoie DB_S_ENDOFROWSET et la boucle se termine. La déclaration de contrôle de boucle compare la valeur de retour de S_OK. Si le code utilise la macro SUCCEEDED , la boucle ne serait pas résilier car DB_S_ENDOFROWSET est considéré comme un code de retour réussi.
alors que (voir le tableau.MoveNext() == S_OK)
{
m_ctlString1.AddString(table.szCommand) ;
m_ctlString2.AddString(table.szText) ;
}
Le consommateur est maintenant prêt à tester avec le fournisseur simple (construit en oeuvre fournisseur Simple accessible en lecture seule).
La rubrique suivante montre comment modifier le consommateur pour une utilisation avec une amélioration du fournisseur qui implémente l'interface IRowsetLocate.
Retour à la mise en œuvre d'un OLE DB modèle consommateur