Należy dodać funkcję obsługi dla przycisku Uruchom , utworzone w oknie dialogowym pliku zasobów.
Aby utworzyć obsługi przycisku Uruchom
CTRL
i dwukrotnie kliknij przycisk Uruchom . Funkcja CTestProvDlg::OnRun jest wyświetlany w oknie źródła.Aby utworzyć obsługi, należy użyć następujących klas OLE DB konsumenta szablonu:
Każda z tych klas odpowiada obiektu COM w dostawcy.
Dodaj kod przedstawione poniżej. W tym kodzie obsługi obiektu CCommand przyjmuje klasy CProvider jako parametr szablonu. Ten parametr reprezentuje związki używane przez dostawcę do dostępu do danych.
///////////////////////////////////////////////////////////////////////
/ / TestProvDlg.cpp
void CTestProvDlg::OnRun()
{
CCommandlt;CAccessor <CProvider> > tabeli;
CDataSource źródła;
CSession sesji;
Jeżeli (źródła.Open("MyProvider.MyProvider.1", null)! = wartość S_OK)
powrotu;
Jeżeli (sesji.Open(source)! = wartość S_OK)
powrotu;
Jeżeli (tabela.Otwórz (sesji, _T("c:\\public\\testprf2\\gloo.txt"))! = wartość S_OK)
powrotu;
podczas (tabela.MoveNext() == wartość S_OK)
{
m_ctlString1.AddString(Table.szCommand);
m_ctlString2.AddString(Table.szText);
}
}
Obsługa używa trzech otwartych zaproszeń, pokazany poniżej, które odpowiadają trzy obiekty COM w dostawcy. Zlokalizuje dostawca przy użyciu swojego identyfikatora ProgID. Identyfikator ProgID można uzyskać z rejestru systemu albo zaglądając do dostawcy rgs
pliku ( MyProvider.rgs
dla prostych dostawcy przedstawione w wykonywaniu prostych dostawcy otwieraniu). Dostawca otwiera plik tekstowy o nazwie gloo.txt
, który zawiera parzystą liczbę ciągów oddzielanych przez przewozu zwraca. Otwórz przekazuje ścieżki pliku do dostawcy jako ciąg dostawcy.
jeżeli (źródła.Open("MyProvider.MyProvider.1", null)! = wartość S_OK)
powrotu;
Jeżeli (sesji.Open(source)! = wartość S_OK)
powrotu;
Jeżeli (tabela.Otwórz (sesji, _T("c:\\public\\testprf2\\gloo.txt"))! = wartość S_OK)
Powrót
Do pobrania danych, wywołań obsługi table.MoveNext
, jak pokazano poniżej. Gdy nie ma już więcej wierszy, Dostawca zwraca DB_S_ENDOFROWSET i pętli. Instrukcji pętli sterowania porównuje wartość zwracany na wartość S_OK. Jeśli kod używany makro SUCCEEDED , pętli byłoby kończy się ponieważ DB_S_ENDOFROWSET uważa się za udane kod zwrotny.
podczas (tabela.MoveNext() == wartość S_OK)
{
m_ctlString1.AddString(Table.szCommand);
m_ctlString2.AddString(Table.szText);
}
Konsument jest gotowy do badania z dostawcą proste (zbudowany w wykonywaniu prostych dostawcy otwieraniu).
Następny temat pokazuje, jak zmodyfikować konsumentów do użytku z rozszerzonego dostawcy implementującą interfejs IRowsetLocate.