Compartilhar via


Objetos de dados e fontes de dados: Manipulação

Depois que um objeto de dados ou fonte de dados tiver sido criado, você pode executar um número de operações comuns em dados, sistema autônomo, por exemplo, inserção e remoção de dados, enumerando sistema autônomo formatos que sistema autônomo dados estão em, e muito mais.Este artigo descreve as técnicas necessárias para concluir as operações mais comuns.Os tópicos incluem:

  • Inserindo dados em uma fonte de dados

  • Determinar os formatos disponível em um objeto de dados

  • Recuperando dados de um objeto de dados

Inserindo dados em uma fonte de dados

Como os dados são inseridos em uma fonte de dados dependem se os dados são fornecidos imediatamente ou no demanda e na meio é fornecida.sistema autônomo possibilidades são da seguinte maneira.

Fornecendo dados imediatamente (renderização imediato)

  • De telefonarCOleDataSource::CacheGlobalData repetidamente para cada formato de área de transferência no qual você está fornecendo dados. Passar o formato da área de transferência a ser usada, um identificador para a memória que contém os dados e, opcionalmente, um FORMATETC estrutura que descrevem os dados.

    - ou -

  • Se você desejar trabalhar diretamente com STGMEDIUM estruturas, você telefonar COleDataSource::CacheData em vez de COleDataSource::CacheGlobalData na opção.

Fornecendo dados sob demanda (programada de renderização)

Este é um tópico avançado.

  • De telefonarCOleDataSource::DelayRenderData repetidamente para cada formato de área de transferência no qual você está fornecendo dados. Passar o formato da área de transferência a ser usado e, opcionalmente, um FORMATETC estrutura que descrevem os dados.Quando os dados são solicitados, a estrutura será telefonar COleDataSource::OnRenderData, que você deve substituir.

    - ou -

  • Se você usar um CFile objeto para fornecer dados, telefonar COleDataSource::DelayRenderFileData em vez de COleDataSource::DelayRenderData na opção anterior. Quando os dados são solicitados, a estrutura será telefonar COleDataSource::OnRenderFileData, que você deve substituir.

Determinar os formatos disponível em um objeto de dados

Antes de um aplicativo permite que o usuário cole dados nele, ele precisa saber se há formatos na área de transferência que pode manipular.Para fazer isso, seu aplicativo faça o seguinte:

  1. Criar um COleDataObject objeto e um FORMATETC estrutura.

  2. telefonar AttachClipboard função de membro para associar o objeto de dados com os dados na área de transferência.

  3. Siga um destes procedimentos:

    • telefonar IsDataAvailable função de membro se houver apenas um ou dois formatos que é necessário. Este fará com que você ganhe time em casos onde os dados na área de transferência suporta formatos significativamente mais que seu aplicativo.

      - ou -

    • telefonar BeginEnumFormats função de membro para iniciar enumerando os formatos disponível na área de transferência. Then telefonar GetNextFormat até que a área de transferência retorna um formato que o aplicativo dá suporte ou se não houver nenhum mais formatos.

Se você estiver usando ON_UPDATE_COMMAND_UI, agora você pode ativar a colagem e, possivelmente, itens Colar especial no menu edição. Para fazer isso, chame qualquer um dos CMenu::EnableMenuItem ou CCmdUI::Enable. Para obter mais informações sobre quais aplicativos de contêiner devem fazer com itens de menu e quando, consulte Menus e recursos: contêiner adições.

Recuperando dados de um objeto de dados

Depois de decidir sobre um formato de dados, tudo o que permanece é recuperar os dados de objeto de dados.Para fazer isso, o usuário decide onde colocar os dados e o aplicativo chama a função apropriada.Os dados estarão disponível em um dos meios seguintes:

Médio

Função para chamar

Memória global (HGLOBAL)

COleDataObject::GetGlobalData

Arquivo (CFile)

COleDataObject::GetFileData

STGMEDIUM estrutura de IStorage)

COleDataObject::GetData

Normalmente, a meio será especificada juntamente com seu formato de área de transferência.Por exemplo, um CF_EMBEDDEDSTRUCT objeto está sempre em um IStorage meio requer um STGMEDIUM estrutura.Portanto, você usaria GetData porque é o único dessas funções que podem aceitar um STGMEDIUM estrutura.

Para casos em que formatar a área de transferência está em um IStream ou HGLOBAL meio, a estrutura pode oferecer um CFile ponteiro que faz referência os dados. O aplicativo pode usar para obter sistema autônomo dados praticamente da mesma forma sistema autônomo ele pode importar dados de um arquivo de leitura de arquivo.Essencialmente, isso é a interface de cliente para o OnRenderData e OnRenderFileData rotinas na fonte de dados.

O usuário pode agora inserir dados no documento assim como para quaisquer outros dados no mesmo formato.

O que você deseja saber mais sobre?

Consulte também

Conceitos

Objetos de dados e fontes de dados (OLE)

Referência

Classe COleDataObject

Classe COleDataSource