Datové objekty a zdroje dat: Manipulace
Po vytvoření datového objektu nebo zdroj dat, můžete provést řadu běžných operací na data, například vložení a odstranění dat, výčet formáty dat nachází, a další.Tento článek popisuje techniky, které jsou nezbytné pro dokončení nejběžnějších operací.Témata zahrnují:
Vkládání dat do zdroje dat.
Určení formáty dat objektu
Načítání dat z datového objektu
Vkládání dat do zdroje dat.
Jak je vložena data do zdroje dat závisí na okamžitě dodává data, nebo na požádání a v prostředí, které je součástí.Možnosti jsou následující:
Zadání Data okamžitě (okamžité vykreslení)
Volání COleDataSource::CacheGlobalData opakovaně pro každý formát schránky, ve kterém zadáváte data.Formát schránky, které mají být použity, předat popisovač paměti obsahující data a volitelně FORMATETC strukturu popisující data.
-nebo-
Pokud chcete pracovat přímo s STGMEDIUM struktur, volání COleDataSource::CacheData místo COleDataSource::CacheGlobalData ve výše uvedených možností.
Zadání dat v případě potřeby (zpožděné vykreslování)
Toto je rozšířená.
Volání COleDataSource::DelayRenderData opakovaně pro každý formát schránky, ve kterém zadáváte data.Předat formát schránky pro použití a případně strukturu FORMATETC strukturu popisující data.Pokud je požadována data, bude volat rámci COleDataSource::OnRenderData, které je třeba přepsat.
-nebo-
Použijete-li CFile objekt, který chcete zadat data, volání COleDataSource::DelayRenderFileData místo COleDataSource::DelayRenderData v předchozí možnosti.Pokud je požadována data, bude volat rámci COleDataSource::OnRenderFileData, které je třeba přepsat.
Určení formáty dat objektu
Před aplikací umožňuje uživateli vložit data, je nutné vědět, pokud jsou formáty schránky, který je schopen zpracovat.Chcete-li to provést, by aplikace postupujte takto:
Vytvořit COleDataObject objekt a strukturu FORMATETC struktury.
Volání objektu data AttachClipboard členské funkce objektu dat přidružit data ve schránce.
Proveďte jeden z následujících postupů:
Volání objektu data IsDataAvailable členské funkce, pokud existuje pouze jeden nebo dva formáty můžete potřebovat.Tento ušetří čas v případech, kdy data ve schránce podporuje formáty podstatně více, než aplikace.
-nebo-
Volání objektu data BeginEnumFormats členské funkce Spustit výčet formátů do schránky.Volejte GetNextFormat dokud vrátí do schránky ve formátu aplikace podporuje, nebo nejsou k dispozici žádné další formáty.
Používáte-li ON_UPDATE_COMMAND_UI, nyní lze povolit vložení a případně i položky Vložit jinak v nabídce Úpravy.To lze provést voláním CMenu::EnableMenuItem nebo CCmdUI::Enable.Další informace o jaké kontejneru aplikace by měla položek nabídky a kdy, viz nabídky a zdroje: kontejner doplňky.
Načítání dat z datového objektu
Jakmile jste se rozhodli na formát dat, zbývá k načtení dat z datového objektu.K tomu se uživatel rozhodne umístění dat a aplikace volá příslušnou funkci.Data budou k dispozici v jedné z následující média:
Střední |
Funkce pro volání |
---|---|
Globální paměti (HGLOBAL) |
COleDataObject::GetGlobalData |
File (CFile) |
COleDataObject::GetFileData |
STGMEDIUM struktury (IStorage) |
COleDataObject::GetData |
Média běžně, bude možné zadat spolu s jeho formát schránky.Například CF_EMBEDDEDSTRUCT objekt je vždy IStorage střední, která vyžaduje STGMEDIUM struktury.Proto by použít GetData vzhledem k tomu, že je pouze jedna z těchto funkcí, které lze přijmout STGMEDIUM struktury.
Pro případy, kdy formát schránky v IStream nebo HGLOBAL střední, může poskytnout rámec CFile ukazatel, který odkazuje na data.Aplikace pak můžete použít soubor číst, získat data téměř stejným způsobem, jak může být import dat ze souboru.To je v podstatě klientské rozhraní, které má OnRenderData a OnRenderFileData rutin v datovém zdroji.
Uživatel může nyní data vložit do dokumentu, stejně jako pro jiná data ve stejném formátu.