Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Depois que um objeto de dados ou fonte de dados tiver sido criado, você poderá executar várias operações comuns nos dados, como inserir e remover dados, enumerar os formatos em que os dados estã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
A forma como os dados são inseridos em uma fonte de dados depende se os dados são fornecidos imediatamente ou sob demanda e em qual meio eles são fornecidos. As possibilidades são as seguintes.
Fornecendo dados imediatamente (renderização imediata)
Chame
COleDataSource::CacheGlobalDatarepetidamente para cada formato de área de transferência no qual você está fornecendo dados. Passe o formato de área de transferência a ser usado, um identificador para a memória que contém os dados e, opcionalmente, uma estrutura FORMATETC que descreve os dados.- ou -
Se você quiser trabalhar diretamente com estruturas STGMEDIUM , chame
COleDataSource::CacheDataem vez deCOleDataSource::CacheGlobalDatana opção acima.
Fornecendo dados sob demanda (renderização atrasada)
Este é um tópico avançado.
Chame
COleDataSource::DelayRenderDatarepetidamente para cada formato de área de transferência no qual você está fornecendo dados. Passe o formato da área de transferência a ser usado e, opcionalmente, uma estrutura FORMATETC que descreve os dados. Quando os dados forem solicitados, a estrutura chamaráCOleDataSource::OnRenderData, que você deve substituir.- ou -
Se você usar um
CFileobjeto para fornecer os dados, chameCOleDataSource::DelayRenderFileDataem vez deCOleDataSource::DelayRenderDatana opção anterior. Quando os dados forem solicitados, a estrutura chamaráCOleDataSource::OnRenderFileData, que você deve substituir.
Determinando os formatos disponíveis em um objeto de dados
Antes que um aplicativo permita que o usuário cole dados nele, ele precisa saber se há formatos na Área de Transferência que ele pode manipular. Para fazer isso, seu aplicativo deve fazer o seguinte:
Crie um
COleDataObjectobjeto e uma estrutura FORMATETC .Chame a função membro do
AttachClipboardobjeto de dados para associar o objeto de dados aos dados na Área de Transferência.Siga um destes procedimentos:
Chame a função membro do
IsDataAvailableobjeto de dados se houver apenas um ou dois formatos necessários. Isso economizará tempo nos casos em que os dados na Área de Transferência dão suporte a significativamente mais formatos do que seu aplicativo.- ou -
Chame a função membro do
BeginEnumFormatsobjeto de dados para começar a enumerar os formatos disponíveis na Área de Transferência. Em seguida, chameGetNextFormataté que a Área de Transferência retorne um formato compatível com seu aplicativo ou não haja mais formatos.
Se você estiver usando ON_UPDATE_COMMAND_UI, agora poderá habilitar a Colagem e, possivelmente, colar itens especiais no menu Editar. Para fazer isso, chame ou CMenu::EnableMenuItemCCmdUI::Enable. Para obter mais informações sobre o que os aplicativos de contêiner devem fazer com itens de menu e quando, consulte Menus e Recursos: Adições de Contêiner.
Recuperando dados de um objeto de dados
Depois de decidir um formato de dados, tudo o que resta é recuperar os dados do 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íveis em um dos seguintes meios:
| Médio | Função a ser chamada |
|---|---|
Memória Global (HGLOBAL) |
COleDataObject::GetGlobalData |
Arquivo (CFile) |
COleDataObject::GetFileData |
Estrutura STGMEDIUM (IStorage) |
COleDataObject::GetData |
Normalmente, o meio será especificado junto com seu formato de área de transferência. Por exemplo, um objeto CF_EMBEDDEDSTRUCT está sempre em um IStorage meio que requer uma estrutura STGMEDIUM . Portanto, você usaria GetData porque é a única dessas funções que pode aceitar uma estrutura STGMEDIUM .
Para casos em que o formato área de transferência está em um IStream ou HGLOBAL meio, a estrutura pode fornecer um CFile ponteiro que faz referência aos dados. Em seguida, o aplicativo pode usar a leitura de arquivo para obter os dados da mesma maneira que pode importar dados de um arquivo. Essencialmente, essa é a interface do lado do cliente para as rotinas e OnRenderFileData rotinas OnRenderData na fonte de dados.
O usuário agora pode inserir dados no documento da mesma forma que qualquer outro dado no mesmo formato.
O que você quer saber mais sobre
Consulte também
Objetos de dados e fontes de dados (OLE)
Classe COleDataObject
Classe COleDataSource