Delen via


Gegevensobjecten en gegevensbronnen: Manipulatie

Nadat een gegevensobject of gegevensbron is gemaakt, kunt u een aantal algemene bewerkingen uitvoeren op de gegevens, zoals het invoegen en verwijderen van gegevens, het inventariseren van de indelingen waarin de gegevens zich bevinden en meer. In dit artikel worden de technieken beschreven die nodig zijn om de meest voorkomende bewerkingen te voltooien. Dit zijn een aantal van de onderwerpen:

Gegevens invoegen in een gegevensbron

Hoe gegevens in een gegevensbron worden ingevoegd, is afhankelijk van of de gegevens onmiddellijk of op aanvraag worden verstrekt en in welk medium deze worden opgegeven. De mogelijkheden zijn als volgt.

Gegevens onmiddellijk leveren (onmiddellijke rendering)

  • Roep COleDataSource::CacheGlobalData herhaaldelijk aan voor elke Klembord-indeling waarin u gegevens opgeeft. Geef de Indeling van het Klembord door die moet worden gebruikt, een ingang naar het geheugen met de gegevens en eventueel een FORMATETC-structuur waarin de gegevens worden beschreven.

    – of –

  • Als u rechtstreeks met STGMEDIUM-structuren wilt werken, roept u COleDataSource::CacheData op in plaats van COleDataSource::CacheGlobalData in de optie hierboven.

Gegevens op aanvraag leveren (vertraagde rendering)

Dit is een geavanceerd onderwerp.

  • Roep COleDataSource::DelayRenderData herhaaldelijk aan voor elke Klembord-indeling waarin u gegevens opgeeft. Geef de Klembord-indeling door die moet worden gebruikt en eventueel een FORMATETC-structuur waarin de gegevens worden beschreven. Wanneer de gegevens worden aangevraagd, zal het framework COleDataSource::OnRenderData aanroepen, dat u moet overschrijven.

    – of –

  • Als u een CFile object gebruikt om de gegevens op te geven, roept u COleDataSource::DelayRenderFileData aan in plaats van COleDataSource::DelayRenderData bij de eerdere optie. Wanneer de gegevens worden aangevraagd, zal het framework COleDataSource::OnRenderFileData aanroepen, dat u moet overschrijven.

De indelingen bepalen die beschikbaar zijn in een gegevensobject

Voordat een toepassing de gebruiker toestaat gegevens erin te plakken, moet deze weten of er indelingen zijn op het Klembord die deze kan verwerken. Hiervoor moet uw toepassing het volgende doen:

  1. Maak een COleDataObject object en een FORMATETC-structuur .

  2. Roep de lidfunctie van het gegevensobject AttachClipboard aan om het gegevensobject te koppelen aan de gegevens op het klembord.

  3. Ga op een van de volgende manieren te werk:

    • Roep de lidfunctie van IsDataAvailable het gegevensobject aan als u slechts één of twee indelingen nodig hebt. Dit bespaart u tijd in gevallen waarin de gegevens op het Klembord aanzienlijk meer indelingen ondersteunen dan uw toepassing.

      – of –

    • Roep de lidfunctie van het gegevensobject BeginEnumFormats aan om te beginnen met het inventariseren van de formaten die beschikbaar zijn op het klembord. Roep vervolgens aan GetNextFormat totdat het Klembord een indeling retourneert die door uw toepassing wordt ondersteund of dat er geen indelingen meer zijn.

Als u ON_UPDATE_COMMAND_UI gebruikt, kunt u nu de opties Plakken en eventueel Plakken Speciaal inschakelen in het menu Bewerken. U doet dit door een van de volgende aanroepen CMenu::EnableMenuItem of CCmdUI::Enable. Zie Menu's en resources: Containertoevoegingen voor meer informatie over wat containertoepassingen moeten doen met menu-items en wanneer.

Gegevens ophalen uit een gegevensobject

Zodra u een gegevensindeling hebt gekozen, hoeft u alleen de gegevens op te halen uit het gegevensobject. Hiervoor bepaalt de gebruiker waar de gegevens moeten worden geplaatst en roept de toepassing de juiste functie aan. De gegevens zijn beschikbaar op een van de volgende mediums:

Gemiddeld Functie om aan te roepen
Globaal geheugen (HGLOBAL) COleDataObject::GetGlobalData
Bestand (CFile) COleDataObject::GetFileData
STGMEDIUM-structuur (IStorage) COleDataObject::GetData

Normaal gesproken wordt het medium samen met de klembordindeling opgegeven. Een CF_EMBEDDEDSTRUCT object bevindt zich bijvoorbeeld altijd in een IStorage medium waarvoor een STGMEDIUM-structuur is vereist. Daarom zou u gebruiken GetData omdat het de enige van deze functies is die een STGMEDIUM-structuur kan accepteren.

Voor gevallen waarin de indeling van het Klembord zich in een IStream of HGLOBAL medium bevindt, kan het framework een CFile pointer bieden die verwijst naar de gegevens. De toepassing kan vervolgens bestand lezen gebruiken om de gegevens op een vergelijkbare manier op te halen als gegevens uit een bestand kunnen importeren. In wezen is dit de interface aan de clientzijde voor de OnRenderData en OnRenderFileData routines in de gegevensbron.

De gebruiker kan nu gegevens in het document invoegen, net zoals voor andere gegevens in dezelfde indeling.

Wat wilt u meer weten over

Zie ook

Gegevensobjecten en gegevensbronnen (OLE)
Klasse COleDataObject
COleDataSource-klasse