Storing Cadeia de caracteres in the Provider OLE DB

Em MyProviderRS. H, o Assistente de objeto ATL cria um padrão de registro de usuário chamado CWindowsFile . Para lidar com as duas seqüências, editar CWindowsFile ou adicionar seu próprio registro de usuário, como mostrado aqui:

////////////////////////////////////////////////////////////////////////
Classe CAgentMan: WIN32_FIND_DATA pública
   DWORD dwBookmark; nbsp;             / / Adicionar esta
   TCHAR szCommand [256];          / / Adicionar esta
   TCHAR szText [256];             / / Adicionar esta
   TCHAR szCommand2 [256];         / / Adicionar esta
   TCHAR szText2 [256];            / / Adicionar esta
{
público:
BEGIN_PROVIDER_COLUMN_MAP(CAgentMan)
   PROVIDER_COLUMN_ENTRY ("FileAttributes", 1, dwFileAttributes)
   PROVIDER_COLUMN_ENTRY ("FileSizeHigh", 2, nFileSizeHigh)
   PROVIDER_COLUMN_ENTRY ("FileSizeLow", 3, nFileSizeLow)
   PROVIDER_COLUMN_ENTRY ("FileName", 4, cFileName)
   PROVIDER_COLUMN_ENTRY ("AltFileName", 5, cAlternateFileName)
END_PROVIDER_COLUMN_MAP()
   bool operador = = (CAgentMan const & am) / / Esta é {opcional
      retornar (lstrcmpi (cFileName, wf.cFileName) = = 0);
   }
}

Os membros de dados szCommand e szText representam as duas seqüências, com szCommand2 e szText2 fornecendo colunas adicionais se necessário. O membro de dados dwBookmark não é necessário para esta simples read-provider only, mas será usado posteriormente para Adicionar uma interface IRowsetLocate. O operador de = = compara instâncias. (Implementação deste operador é opcional).

Para apoiar as duas seqüências, PROVIDER_COLUMN_MAP precisa modificação também. Substituir o PROVIDER_COLUMN_MAP mostrado acima com aquele mostrado aqui:

BEGI&N_PROVIDER_COLUMN_MAP()
 nbsp;  PROVIDER_COLUMN_ENTRY_STR(OLESTR("Command"), 1, 256, GUID_NULL, CAgentMan, szCommand)
    PROVIDER_COLUMN_ENTRY_STR (OLESTR ("texto"), 2, 256, GUID_NULL, CAgentMan, szText) PROVIDER_COLUMN_ENTRY_STR(OLESTR("Command2"), 3, 256, GUID_NULL, CAgentMan, szCommand2)
    PROVIDER_COLUMN_ENTRY_STR (OLESTR ("Text2"), 4, 256, GUID_NULL, CAgentMan, szText2)
END_PROVIDER_COLUMN_MAP()

Quando isso é feito, seu provedor deve estar pronto para compilar e executar. Para testar o provedor, você precisa de um consumidor com funcionalidade de correspondência. Implementar um consumidor simples mostra como criar um consumidor de teste. Execute teste de consumidor com o provedor. Verifique se que o consumidor teste recupera as seqüências de caracteres apropriadas do provedor ao clicar no botão executar na caixa de diálogo teste consumidor.

Depois de testar com êxito o provedor, você pode querer aumentar a sua funcionalidade ao implementar interfaces adicionais. Um exemplo é mostrado na próxima seção, aprimorando o provedor de somente leitura simples.

Index