Adicionando o manipulador do botão Run

Você deve adicionar uma função de manipulador para o botão executar que você criou no arquivo de recurso de caixa de diálogo.

Para criar um manipulador de botão Run

Para criar o manipulador, você deve usar as seguintes classes de OLE DB consumidor modelo:

Cada uma dessas classes corresponde a um objeto COM no provedor.

Adicione o código mostrado abaixo. Neste código de manipulador, o objeto CCommand leva uma classe de CProvider como um parâmetro do modelo. Esse parâmetro representa as ligações usadas pelo provedor de acesso aos dados.

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

privatevoid CTestProvDlg::OnRun()
{
   CCommandlt;CAccessor <CProvider> > da tabela;
   CDataSource fonte;
   CSession sessão;

se (origem.Open("MyProvider.MyProvider.1", NULL)! = S_OK)
      retornar;

se (sessão.Open(Source)! = S_OK)
      retornar;

se (tabela.Aberta (sessão, _T("c:\\public\\testprf2\\gloo.txt"))! = S_OK)
      retornar;

ao mesmo tempo (tabela.MoveNext() = = S_OK)
   {
      m_ctlString1.AddString(table.szCommand);
      m_ctlString2.AddString(table.szText);
   }
}

O manipulador usa três chamadas aberto , mostradas abaixo, que correspondem a três objetos COM no provedor. Ele localiza o provedor usando sua ProgID. Você pode obter o ProgID do registro do sistema ou através do provedor rgs arquivo ( MyProvider.rgs para o provedor simple mostrado na Implementando um provedor de somente leitura simples). O provedor abre um arquivo de texto chamado gloo.txt , que contém um número par de seqüências de caracteres separadas por carro retorna. Aberta passa o caminho do arquivo para o provedor como uma Cadeia de caracteres para o provedor.

   se (origem.Open("MyProvider.MyProvider.1", NULL)! = S_OK)
      retornar;

se (sessão.Open(Source)! = S_OK)
      retornar;

se (tabela.Aberta (sessão, _T("c:\\public\\testprf2\\gloo.txt"))! = S_OK)
      Voltar

Para buscar os dados, as chamadas de manipulador table.MoveNext , como mostrado abaixo. Quando há não mais linhas, o provedor retorna DB_S_ENDOFROWSET e encerra o loop. A instrução de Controlarar de loop compara o valor de retorno de S_OK. Se o código usado a macro teve êxito , o loop não iria terminar porque DB_S_ENDOFROWSET é considerado um código de retorno bem-sucedido.

   ao mesmo tempo (tabela.MoveNext() = = S_OK)
   {
      m_ctlString1.AddString(table.szCommand);
      m_ctlString2.AddString(table.szText);
   }

O consumidor está pronto para testar com o provedor simples (construído em implementar um provedor de somente leitura simples).

O próximo tópico mostra como modificar o consumidor para uso com um Avançado provedor que implementa a interface IRowsetLocate.

Voltar à implementação de um consumidor de OOLE DB modelo

Index