Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
När ett dataobjekt eller en datakälla har skapats kan du utföra ett antal vanliga åtgärder på data, till exempel att infoga och ta bort data, räkna upp de format som data finns i med mera. Den här artikeln beskriver de tekniker som krävs för att slutföra de vanligaste åtgärderna. Ämnena omfattar:
Infoga data i en datakälla
Hur data infogas i en datakälla beror på om data tillhandahålls omedelbart eller på begäran och i vilket medium de tillhandahålls. Möjligheterna är följande.
Tillhandahålla data omedelbart (omedelbar återgivning)
Anropa
COleDataSource::CacheGlobalDataupprepade gånger för varje Urklippsformat där du anger data. Skicka urklippsformatet som ska användas, en referens till minnet som innehåller data och, om du vill, en FORMATETC-struktur som beskriver data.-eller-
Om du vill arbeta direkt med STGMEDIUM-strukturer anropar
COleDataSource::CacheDatadu i stället förCOleDataSource::CacheGlobalDatai alternativet ovan.
Leverera data på begäran (fördröjd återgivning)
Det här är ett avancerat ämne.
Anropa
COleDataSource::DelayRenderDataupprepade gånger för varje Urklippsformat där du anger data. Skicka urklippsformatet som ska användas och, om du vill, en FORMATC-struktur som beskriver data. När data begärs kommer ramverket att anropaCOleDataSource::OnRenderData, vilket du måste åsidosätta.-eller-
Om du använder ett
CFile-objekt för att tillhandahålla data, anropaCOleDataSource::DelayRenderFileDatai stället förCOleDataSource::DelayRenderDatai föregående alternativ. När data begärs kommer ramverket att anropaCOleDataSource::OnRenderFileData, vilket du måste åsidosätta.
Fastställa vilka format som är tillgängliga i ett dataobjekt
Innan ett program tillåter att användaren klistrar in data i det måste det veta om det finns format på Urklipp som det kan hantera. För att göra detta bör programmet göra följande:
Skapa ett
COleDataObjectobjekt och en FORMATETC-struktur .Anropa dataobjektets
AttachClipboardmedlemsfunktion för att associera dataobjektet med data i Urklipp.Gör något av följande:
Anropa dataobjektets
IsDataAvailablemedlemsfunktion om det bara finns ett eller två format som du behöver. Detta sparar tid i fall där data i Urklipp stöder betydligt fler format än ditt program.-eller-
Anropa dataobjektets
BeginEnumFormatsmedlemsfunktion för att börja räkna upp de format som är tillgängliga i Urklipp. AnropaGetNextFormatsedan tills Urklipp returnerar ett format som programmet stöder eller så finns det inga fler format.
Om du använder ON_UPDATE_COMMAND_UI kan du nu aktivera Klistra in och eventuellt Klistra in specialobjekt på redigera-menyn. Det gör du genom att anropa antingen CMenu::EnableMenuItem eller CCmdUI::Enable. Mer information om vad containerprogram ska göra med menyalternativ och när finns i Menyer och resurser: Containertillägg.
Hämta data från ett dataobjekt
När du har bestämt dig för ett dataformat är allt som återstår att hämta data från dataobjektet. För att göra detta bestämmer användaren var data ska placeras och programmet anropar lämplig funktion. Data kommer att vara tillgängliga i något av följande medier:
| Medel | Funktion att ringa |
|---|---|
Globalt minne (HGLOBAL) |
COleDataObject::GetGlobalData |
Fil (CFile) |
COleDataObject::GetFileData |
STGMEDIUM-struktur (IStorage) |
COleDataObject::GetData |
Vanligtvis anges mediet tillsammans med urklippsformatet. Till exempel är ett CF_EMBEDDEDSTRUCT objekt alltid i ett IStorage medium som kräver en STGMEDIUM-struktur . Därför skulle du använda GetData eftersom det är den enda av dessa funktioner som kan acceptera en STGMEDIUM-struktur .
För fall där Urklippsformatet är i ett IStream eller HGLOBAL medium kan ramverket ge en CFile pekare som refererar till datan. Programmet kan sedan använda filläsning för att hämta data på ungefär samma sätt som det kan importera data från en fil. Det här är i princip gränssnittet på klientsidan för OnRenderData rutinerna och OnRenderFileData i datakällan.
Användaren kan nu infoga data i dokumentet precis som för andra data i samma format.
Vad vill du veta mer om?
Se även
Dataobjekt och datakällor (OLE)
COleDataObject-klass
COleDataSource-klass