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.
Observação
A biblioteca Microsoft Foundation Classes (MFC) continua sendo suportada. No entanto, não estamos mais adicionando recursos ou atualizando a documentação.
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 da Á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
AttachClipboarddo objeto 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 o aplicativo.- ou -
Chame a função membro
BeginEnumFormatsdo objeto 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 o 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 CMenu::EnableMenuItem ou CCmdUI::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 o respectivo 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 da Área de Transferência está em um meio IStream ou HGLOBAL, a estrutura pode fornecer um ponteiro CFile que referencia os 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, esta é a interface do lado do cliente para as rotinas OnRenderData e OnRenderFileData 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