Rozhraní pro přenos dat

Rozhraní IDataObject poskytuje uživatelům dat metody pro získávání a nastavení dat objektu, určení formátů, které objekt podporuje, a registraci a přijímání oznámení, když se data v objektu změní. Při získávání dat může volající určit formát, ve kterém chce data vykreslit. Zdroj dat však určuje médium úložiště, které vrací v výstupním parametru poskytnutém volajícím.

IDataObject dodává všechny nástroje, které potřebujete k implementaci přenosů schránky Windows nebo složených přenosů dokumentů ve vašich aplikacích. Pokud chcete také podporovat přetahování přetahování, musíte implementovat IDropSource a IDropTarget rozhraní spolu s IDataObject.

Rozhraní IDataObject v kombinaci s rozhraními API schránky OLE poskytují všechny možnosti rozhraní API schránky systému Windows. Obecně není nutné používat obě rozhraní API schránky. Dodavatelé dat, kteří podporují přenosy přetažení nebo složené dokumenty OLE, musí implementovat IDataObject rozhraní. Pokud vaše aplikace nyní podporuje pouze přenosy schránky, ale vy máte v úmyslu přidat přetažení nebo složené dokumenty v pozdějších verzích, můžete chtít implementovat IDataObject a rozhraní API schránky OLE nyní, abyste minimalizovali dobu strávenou překódováním a laděním později. Můžete také chtít implementovat IDataObject, aby bylo možné využívat přenosová média jiná než globální paměť.

Následující tabulka shrnuje, které z nich se mají použít, v závislosti na typech přenosu dat, které chcete podporovat:

Podpora Používat
Složené dokumenty
objektu IDataObject
Přetahování přenosů
IDataObject, IDropSource, IDropTarget, DoDragDrop (nebo ekvivalentní)
Přenosy schránky výhradně s využitím globální paměti
rozhraní API schránky
Přenosy schránky pomocí jiných exchange médií než globální paměti.
objektu IDataObject
Schránka se teď přenese, ale později přetáhněte nebo přetáhněte složené dokumenty.
IDataObject a rozhraní a funkce uvedené výše pro přetahování přenosů

Když uživatel zahájí operaci přenosu dat, zdrojová aplikace vytvoří instanci IDataObject a prostřednictvím ní zpřístupní data v jednom nebo více formátech. V přenosu schránky aplikace volá OleSetClipboard funkce předat ukazatel datového objektu ole. (OleSetClipboard také nabízí standardní formáty dat schránky pro aplikace OLE verze 1 i aplikace jiné než OLE.) Při přetahování přetahování aplikace místo toho volá funkci DoDragDrop.

Na přijímající straně přenosu obdrží cíl ukazatel IDataObject buď jako argument vyvolání IDropTarget::D ropTarget::D rop nebo voláním OleSetClipboard funkce, podle toho, zda je přenos pomocí přetažení nebo schránky. Po získání tohoto ukazatele cíl volá IDataObject::EnumFormatEtc zjistit, jaké formáty jsou k dispozici pro načtení a na jaké typy médií lze získat. Příjemce těchto informací požádá o data voláním IDataObject::GetData.

přenosu dat