Oggetti dati e origini dati: modifica
Dopo un oggetto dati o un'origine dati è stato creato, è possibile eseguire una serie di operazioni comuni sui dati, ad esempio inserimento e i dati rimuovere, enumeranti i formati dati disponibili in e in.In questo articolo vengono descritte le tecniche necessarie per completare le operazioni più comuni.Gli argomenti trattati includono
Inserimento di dati in un'origine dati
Determinazione dei formati disponibili in un oggetto dati
Recupero di dati da un oggetto dati
Inserimento di dati in un'origine dati
Come i dati vengono inseriti in un'origine dati varia a seconda che i dati vengono forniti immediatamente o su richiesta e in quale verrà fornito.I valori possibili sono indicati di seguito.
Specifica dei dati contemporaneamente (rendering diretto)
Richiedere ripetutamente COleDataSource::CacheGlobalData ogni formato degli Appunti in cui si specifica dei dati.Passare il formato degli Appunti da utilizzare, un handle alla memoria che contengono dati e, facoltativamente, una struttura di FORMATETC descriventi i dati.
In alternativa
Se si desidera utilizzare direttamente le strutture di STGMEDIUM , chiamate COleDataSource::CacheData anziché COleDataSource::CacheGlobalData nell'esempio precedente.
Specifica dei dati su richiesta (rendering ritardato)
Si tratta di un argomento avanzato.
Richiedere ripetutamente COleDataSource::DelayRenderData ogni formato degli Appunti in cui si specifica dei dati.Passare il formato degli Appunti da utilizzare e, facoltativamente, una struttura di FORMATETC in cui sono descritti i dati.Quando i dati sono necessari, il framework chiamerà COleDataSource::OnRenderData, che è necessario eseguire l'override.
In alternativa
Se si utilizza un oggetto di CFile per fornire dati, chiamare COleDataSource::DelayRenderFileData anziché COleDataSource::DelayRenderData nell'opzione precedente.Quando i dati sono necessari, il framework chiamerà COleDataSource::OnRenderFileData, che è necessario eseguire l'override.
Determinazione dei formati disponibili in un oggetto dati
Affinché un'applicazione è consentita l'utente ai dati incolla in, è necessario sapere se esistono formati gli Appunti in grado di gestire.A questo scopo, l'applicazione deve effettuare le operazioni seguenti:
Creare un oggetto di COleDataObject e una struttura di FORMATETC .
Chiamare la funzione membro di AttachClipboard oggetto dati per associare l'oggetto dati con i dati negli Appunti.
Effettuare una delle operazioni seguenti:
Chiamare la funzione membro di IsDataAvailable oggetto dati se esistono solo uno o due formato necessarie.Ciò consente di risparmiare tempo nei casi in cui i dati negli Appunti supportano significantly molte più formati che l'applicazione.
In alternativa
Chiamare la funzione membro di BeginEnumFormats oggetto dati per avviare l'enumerazione dei formati disponibili negli Appunti.Chiamare GetNextFormat finché gli Appunti non restituiscono un formato i supporti di applicazione o vi sono più formati.
Se si utilizza ON_UPDATE_COMMAND_UI, è ora possibile attivare gli elementi dell'Incolla speciale, eventualmente, e incolla dal menu Modifica.A tale scopo, chiamare CMenu::EnableMenuItem o CCmdUI::Enable.Per ulteriori informazioni sulle applicazioni contenitori devono utilizzare le voci di menu e quando, vedere menu e risorse: Aggiunta del contenitore.
Recupero di dati da un oggetto dati
Una volta scelte di un formato dati, tutto rimanente è di recuperare i dati dall'oggetto dati.A tale scopo, l'utente decide in cui inserire i dati e l'applicazione chiama la funzione appropriata.I dati saranno disponibili in uno dei contenuti multimediali:
Medium |
Funzione da chiamare |
---|---|
Memoria globale (HGLOBAL) |
COleDataObject::GetGlobalData |
File (CFile) |
COleDataObject::GetFileData |
Struttura diSTGMEDIUM (IStorage) |
COleDataObject::GetData |
In genere, il supporto viene specificato con il formato degli Appunti.Ad esempio, un oggetto di CF_EMBEDDEDSTRUCT è sempre in un supporto di IStorage che richiede una struttura di STGMEDIUM .Di conseguenza, si utilizzerebbe GetData perché è quello solo di queste funzioni che possono accettare una struttura di STGMEDIUM .
Per i casi in cui il formato degli Appunti è in un supporto di HGLOBAL o di IStream , il framework può fornire un puntatore di CFile che fa riferimento ai dati.L'applicazione può quindi utilizzare il file letto per ottenere i dati come possibile importare i dati da un file.Essenzialmente, questa è l'interfaccia lato client alle routine di OnRenderFileData e di OnRenderData nell'origine dati.
L'utente può inserire i dati nel documento come per gli altri dati nello stesso formato.