Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar 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 numa fonte de dados depende do facto de os dados serem fornecidos imediatamente ou a pedido, e do meio em que são fornecidos. As possibilidades são as seguintes.
Fornecimento de dados imediatamente (renderização imediata)
Ligue
COleDataSource::CacheGlobalDatarepetidamente para cada formato da Á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 descrevendo os dados.-ou-
Se você quiser trabalhar diretamente com estruturas STGMEDIUM , ligue
COleDataSource::CacheDataem vez deCOleDataSource::CacheGlobalDatana opção acima.
Fornecimento de dados sob demanda (renderização atrasada)
Este é um tópico avançado.
Ligue
COleDataSource::DelayRenderDatarepetidamente para cada formato da Á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 descrevendo os dados. Quando os dados são 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 são solicitados, a estrutura chamaráCOleDataSource::OnRenderFileData, que você deve substituir.
Determinando os formatos disponíveis em um objeto de dados
Antes de um aplicativo permitir 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 objeto de dados
AttachClipboardpara associar o objeto de dados aos dados na Área de Transferência.Proceda de uma das seguintes formas:
Chame a função membro
IsDataAvailabledo objeto de dados se houver apenas um ou dois formatos necessários. Isto irá poupar-lhe tempo nos casos em que os dados na Área de Transferência suportam significativamente mais formatos do que a sua aplicação.-ou-
Chame a função de membro do objeto de dados
BeginEnumFormatspara 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 a sua aplicação ou não haja mais formatos.
Caso esteja a usar ON_UPDATE_COMMAND_UI, agora pode ativar os itens Colar e, possivelmente, Colar Especial no menu Editar. Para fazer isso, ligue para ou 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 sobre 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 num dos seguintes meios:
| Médio | Função a chamar |
|---|---|
Memória Global (HGLOBAL) |
COleDataObject::GetGlobalData |
Ficheiro (CFile) |
COleDataObject::GetFileData |
Estrutura STGMEDIUM (IStorage) |
COleDataObject::GetData |
Comumente, o meio será especificado juntamente 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 da área de transferência está em um IStream ou HGLOBAL meio, a estrutura pode fornecer um CFile ponteiro que faz referência aos dados. O aplicativo pode então usar a leitura de arquivo para obter os dados da mesma forma 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 como para quaisquer outros dados no mesmo formato.
O que você quer saber mais sobre
Ver também
Objetos de dados e fontes de dados (OLE)
COleDataObject Classe
COleDataSource Classe