Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Po vytvoření datového objektu nebo zdroje dat můžete s daty provádět řadu běžných operací, jako je vložení a odebrání dat, výčet formátů, ve které jsou data, a další. Tento článek popisuje techniky potřebné k dokončení nejběžnějších operací. Témata:
Vložení dat do zdroje dat
Způsob vložení dat do zdroje dat závisí na tom, jestli se data zadává okamžitě nebo na vyžádání a ve kterém médiu se zadává. Možnosti jsou následující.
Okamžité poskytování dat (okamžité vykreslování)
Opakovaně volejte
COleDataSource::CacheGlobalDatapro každý formát schránky, ve kterém poskytujete data. Předejte formát schránky, který se má použít, identifikátor paměti obsahující data a volitelně strukturu FORMATETC popisující data.nebo
Pokud chcete pracovat přímo se strukturami STGMEDIUM, musíte místo výše uvedené možnosti zavolat
COleDataSource::CacheDatanamístoCOleDataSource::CacheGlobalData.
Poskytování dat na vyžádání (zpožděné vykreslování)
Toto je rozšířené téma.
Opakovaně volejte
COleDataSource::DelayRenderDatapro každý formát schránky, ve kterém poskytujete data. Předejte formát schránky, který se má použít, a volitelně i strukturu FORMATETC popisující data. Po vyžádání dat bude rozhraní volatCOleDataSource::OnRenderData, což je nutné přepsat.nebo
Pokud k zadání dat použijete
CFileobjekt, místoCOleDataSource::DelayRenderFileDatav předchozí možnosti volejteCOleDataSource::DelayRenderData. Po vyžádání dat bude rozhraní volatCOleDataSource::OnRenderFileData, což je nutné přepsat.
Určení formátů dostupných v datovém objektu
Než aplikace umožní uživateli vložit data do ní, musí vědět, jestli jsou ve schránce formáty, které dokáže zpracovat. K tomu by vaše aplikace měla provést následující:
Vytvořte
COleDataObjectobjekt a strukturu FORMATETC .Zavoláním členské funkce datového
AttachClipboardobjektu přidružíte datový objekt k datům ve schránce.Udělejte jednu z těchto věcí:
Pokud potřebujete jenom jeden nebo dva formáty, volejte členskou funkci datového
IsDataAvailableobjektu. Ušetříte tak čas v případech, kdy data ve schránce podporují výrazně více formátů než vaše aplikace.nebo
Spusťte výčet formátů dostupných na Schránce voláním členské funkce datového objektu
BeginEnumFormats. Potom zavolejteGetNextFormat, dokud schránka nevrátí formát, který vaše aplikace podporuje nebo neexistují žádné další formáty.
Pokud používáte ON_UPDATE_COMMAND_UI, můžete teď povolit možnost Vložit a případně vložit speciální položky v nabídce Úpravy. Chcete-li to provést, zavolejte buď CMenu::EnableMenuItem nebo CCmdUI::Enable. Další informace o tom, co mají aplikace typu kontejner dělat s položkami nabídky a kdy, najdete v tématu Nabídky a prostředky: Doplňky kontejnerů.
Načítání dat z datového objektu
Jakmile se rozhodnete o datovém formátu, vše, co zbývá, je načíst data z datového objektu. Za tímto účelem se uživatel rozhodne, kam se mají data umístit, a aplikace zavolá příslušnou funkci. Data budou k dispozici v jednom z následujících médií:
| Středně | Funkce, která se má volat |
|---|---|
Globální paměť (HGLOBAL) |
COleDataObject::GetGlobalData |
Soubor (CFile) |
COleDataObject::GetFileData |
STGMEDIUM – struktura (IStorage) |
COleDataObject::GetData |
Médium se obvykle zadává spolu s formátem schránky. Například objekt CF_EMBEDDEDSTRUCT je vždy ve IStorage médiu, které vyžaduje strukturu STGMEDIUM . Proto byste použili GetData , protože je to jediná z těchto funkcí, která může přijmout strukturu STGMEDIUM .
V případech, kdy je formát schránky ve formátu IStream nebo HGLOBAL médiu, může architektura poskytnout CFile ukazatel, který odkazuje na data. Aplikace pak může pomocí čtení souboru získat data stejným způsobem, jako by mohla importovat data ze souboru. V podstatě se jedná o klientské rozhraní k rutinám OnRenderData a OnRenderFileData ve zdroji dat.
Uživatel teď může do dokumentu vkládat data stejně jako pro všechna ostatní data ve stejném formátu.
O čem chcete vědět víc
Viz také
Datové objekty a zdroje dat (OLE)
třída COleDataObject
Třída COleDataSource