Добавление обработчика кнопки Run

Необходимо добавить функцию обработчика для кнопки выполнить в файле ресурсов диалогового окна.

Создание обработчика кнопки Run

Для создания обработчика, используйте следующие классы шаблонов потребителей OLE DB:

Каждый из этих классов соответствует COM-объект в поставщике.

Добавьте приведенный ниже код. В этом коде обработчика объект CCommand принимает класс CProvider в качестве параметра шаблона. Этот параметр представляет привязки, используемые поставщиком доступа к данным.

///////////////////////////////////////////////////////////////////////
/ / TestProvDlg.cpp

void 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 в поставщике. Это находит провайдера, с помощью ProgID. ProgID можно получить из системного реестра или посмотрев в поставщике rgs файл ( MyProvider.rgs для простого поставщика в реализации простого поставщика только для чтения). Поставщик открывает текстовый файл с именем 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. Если код макроса SUCCEEDED , цикл прекращается не потому, что DB_S_ENDOFROWSET рассматривается успешный код возврата.

   во время (таблица.MoveNext() == S_OK)
   {
      m_ctlString1.AddString(Table.szCommand);
      m_ctlString2.AddString(Table.szText);
   }

Теперь потребитель готов для тестирования с простой поставщик (построен в реализации простого поставщика только для чтения).

Следующий раздел показывает, как изменить потребителя для использования с более поставщик , реализующий интерфейс IRowsetLocate.

Вернуться к реализации потребителя OLE DB шаблона

Index