Objetos de dados e fontes de dados: manipulação
Depois de um objeto de dados ou fonte de dados tiver sido criado, você pode executar um número de operações comuns de dados, como, por exemplo, inserção e remoção de dados, enumerando os formatos de que dados são, 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
Determinando os formatos disponíveis 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 sob demanda e em qual mídia é fornecido.As possibilidades são como segue.
Fornecendo dados imediatamente (processamento imediato)
Chamar COleDataSource::CacheGlobalData repetidamente para cada formato de área de transferência na qual você está fornecendo dados.Passar o formato a ser usado um identificador para a memória que contém os dados e, opcionalmente, um FORMATETC estrutura que descreve os dados.
- ou -
Se você quiser trabalhar diretamente com STGMEDIUM estruturas, chamada COleDataSource::CacheData em vez de COleDataSource::CacheGlobalData na opção acima.
Fornecendo dados sob demanda (atrasada de processamento)
Este é um tópico avançado.
Chamar COleDataSource::DelayRenderData repetidamente para cada formato de área de transferência na qual você está fornecendo dados.Passar o formato a ser usado e, opcionalmente, um FORMATETC estrutura que descreve os dados.Quando os dados são solicitados, a estrutura chamará COleDataSource::OnRenderData, que deve substituir.
- ou -
Se você usar um CFile objeto fonte de dados, chamada COleDataSource::DelayRenderFileData em vez de COleDataSource::DelayRenderData na opção anterior.Quando os dados são solicitados, a estrutura chamará COleDataSource::OnRenderFileData, que deve substituir.
Determinando os formatos disponíveis em um objeto de dados
Um aplicativo permite que o usuário colar dados, ele precisa saber se há formatos na área de transferência que pode manipular.Para fazer isso, seu aplicativo deve fazer o seguinte:
Criar um COleDataObject objeto e um FORMATETC estrutura.
Chamar o objeto de dados AttachClipboard função de membro para associar o objeto de dados com os dados na área de transferência.
Siga um destes procedimentos:
Chamar o objeto de dados IsDataAvailable função de membro se houver apenas um ou dois formatos que você precisa.Isso economizará tempo em casos onde os dados na área de transferência suporta formatos mais significativamente diferente do seu aplicativo.
- ou -
Chamar o objeto de dados BeginEnumFormats função de membro para iniciar enumerar os formatos disponíveis na área de transferência.Em seguida, chamar GetNextFormat até a área de transferência retorna um formato de seu aplicativo suporta ou não há nenhum mais formatos.
Se você estiver usando ON_UPDATE_COMMAND_UI, você pode habilitar o colar e, possivelmente, itens Colar especial no menu Editar.Para fazer isso, chame CMenu::EnableMenuItem ou CCmdUI::Enable.Para obter mais informações sobre o recipiente aplicativos 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 resta é recuperar os dados do objeto de dados.Para isso, o usuário decide onde colocar os dados e o aplicativo chama a função apropriada.Os dados estarão disponíveis em um dos seguintes meios:
Médio |
Função de chamada |
---|---|
Memória global (HGLOBAL) |
COleDataObject::GetGlobalData |
File (CFile) |
COleDataObject::GetFileData |
STGMEDIUM estrutura (IStorage) |
COleDataObject::GetData |
Normalmente, a mídia será especificada juntamente com seu formato de área de transferência.Por exemplo, um CF_EMBEDDEDSTRUCT objeto está sempre em uma IStorage médio requer um STGMEDIUM estrutura.Portanto, você usaria GetData porque ele é apenas uma dessas funções que podem aceitar um STGMEDIUM estrutura.
Para casos onde o formato de área de transferência está em um IStream ou HGLOBAL médio, a estrutura pode fornecer um CFile ponteiro que faz referência os dados.O aplicativo pode usar para obter os dados praticamente da mesma forma como ele pode importar dados de um arquivo de leitura de arquivo.Essencialmente, essa é 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 outros dados no mesmo formato.