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 così via. 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 dipende dai dati vengono forniti immediatamente o su richiesta e in quale media è fornito. I valori possibili sono indicati di seguito.
Specifica dei dati immediatamente rendering (esecuzione immediata)
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.
- oppure -
Se si desidera utilizzare direttamente le strutture di STGMEDIUM, chiamare COleDataSource::CacheData anziché COleDataSource::CacheGlobalData nell'opzione sopra riportata.
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 richiesti, il framework chiamerà COleDataSource::OnRenderData, che è necessario eseguire l'override.
- oppure -
Se si utilizza un oggetto di CFile per fornire dati, chiamare COleDataSource::DelayRenderFileData anziché COleDataSource::DelayRenderData nell'opzione precedente. Quando i dati richiesti, il framework chiamerà COleDataSource::OnRenderFileData, che è necessario eseguire l'override.
Determinazione dei formati disponibili in un oggetto dati
Affinché un'applicazione consentire all'utente ai dati di inserimento in, deve sapere se esistono formati gli Appunti in grado di gestire. A questo scopo, l'applicazione deve eseguire 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 seguenti operazioni:
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 necessarie molte più formati che l'applicazione.
- oppure -
Chiamare la funzione membro di BeginEnumFormats oggetto dati per avviare l'enumerazione dei formati disponibili negli Appunti. Chiamare GetNextFormat agli Appunti non restituiscono un formato supportate da l o non vi siano più formati.
Se si utilizza ON_UPDATE_COMMAND_UI, è ora possibile attivare gli elementi edit paste special, eventualmente, e incolla del 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, ogni elemento rimanente è di recuperare i dati dall'oggetto dati. A tale scopo, l'utente decide in cui inserire dati e le chiamate di l la funzione appropriata. I dati saranno disponibili in uno dei supporti:
Medium |
Funzione da chiamare |
---|---|
Memoria globale (HGLOBAL) |
COleDataObject::GetGlobalData |
File (CFile) |
COleDataObject::GetFileData |
Struttura diSTGMEDIUM (IStorage) |
COleDataObject::GetData |
In genere, medium viene specificato con il formato degli Appunti. Ad esempio, un oggetto CF_EMBEDDEDSTRUCT è sempre in un supporto di IStorage che richiede una struttura di STGMEDIUM. Pertanto, si utilizzerebbe GetData perché è l'unico 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 di lettura per ottenere i dati quali potrebbe includere i dati da un file. Essenzialmente, si tratta dell'interfaccia lato client alle routine di OnRenderFileData e di OnRenderData nell'origine dati.
L'utente può ora inserire i dati nel documento come per gli altri dati nello stesso formato.