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.

9s5z33c4.collapse_all(it-it,VS.110).gifSpecifica 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.

9s5z33c4.collapse_all(it-it,VS.110).gifSpecifica 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:

  1. Creare un oggetto di COleDataObject e una struttura di FORMATETC .

  2. Chiamare la funzione membro di AttachClipboard oggetto dati per associare l'oggetto dati con i dati negli Appunti.

  3. 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.

9s5z33c4.collapse_all(it-it,VS.110).gifScegliere l'argomento su cui visualizzare maggiori informazioni

Vedere anche

Riferimenti

Classe COleDataObject

Classe COleDataSource

Concetti

Oggetti dati e origini dati (OLE)