Ви повинні додати функцію обробник для запуску кнопки, створені в діалоговому файлу ресурсів.
Щоб створити кнопку обробник виконати
CTRL і двічі клацніть на кнопку " запустити ". CTestProvDlg::OnRun функцію, що відображається у вікні вихідного.Щоб створити обробник, ви повинні використовувати Горгани OLE DB споживача шаблон:
Кожний з цих класів відповідає COM-об'єкта в постачальника.
Додати код показано нижче. У кодексі обробника CCommand об'єкт займає CProvider клас як параметр шаблон. Цей параметр позначає прив'язки, які використовуються постачальником для доступу до даних.
///////////////////////////////////////////////////////////////////////
/ / TestProvDlg.cpp
недійсним CTestProvDlg::OnRun()
{
CCommandlt;CAccessor <CProvider> > Таблиця;
CDataSource джерело;
CSession сесії;
Якщо (джерело.Open("MyProvider.MyProvider.1", Null)! = S_OK)
повернення;
Якщо (сесії.Open(Source)! = S_OK)
повернення;
Якщо (таблиці.Відкрити (сесії, _T("c:\\public\\testprf2\\gloo.txt"))! = S_OK)
повернення;
під час (таблиці.MoveNext() = = S_OK)
{
m_ctlString1.AddString(Table.szCommand);
m_ctlString2.AddString(Table.szText);
}
}
Обробник використовує три відкриті дзвінки, показано нижче, які відповідають три COM об'єктів у постачальника. Він знаходить провайдера за допомогою його код програми. Ви можете отримати код програми з системного реєстру або постачальник rgs файл ( MyProvider.rgs для простих постачальника показано в реалізації простий Read-Only провайдера). Постачальник відкриється текстовий файл з іменем gloo.txt , яка містить числа рядків, розділених перевезення повертає. Відкрити проходить файлу надано постачальнику як рядок до постачальника.
якщо (джерело.Open("MyProvider.MyProvider.1", Null)! = S_OK)
повернення;
Якщо (сесії.Open(Source)! = S_OK)
повернення;
Якщо (таблиці.Відкрити (сесії, _T("c:\\public\\testprf2\\gloo.txt"))! = S_OK)
повернення
Витягти дані, дзвінки обробника table.MoveNext , як показано нижче. Коли немає більше рядків, постачальник повертає DB_S_ENDOFROWSET і петлі припиняється. Заяви елемент керування цикл порівнює значення, яке повертається до S_OK. Якщо код макросу успішно , петлі не буде припинити, тому що DB_S_ENDOFROWSET вважається успішним код повернення.
під час (таблиці.MoveNext() = = S_OK)
{
m_ctlString1.AddString(Table.szCommand);
m_ctlString2.AddString(Table.szText);
}
Споживач готовий до перевірки цього постачальника простий (побудований в реалізації простий Read-Only провайдера).
Наступна тема показує, як змінити споживача для використання в Розширений постачальник IRowsetLocate інтерфейсу.