Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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