Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az IDataObject felület lehetővé teszi az adatok felhasználói számára az objektumok adatainak lekérését és beállítását, annak meghatározását, hogy az objektum mely formátumokat támogatja, valamint az objektum adatainak változásakor regisztrálva és fogadva az értesítéseket. Az adatok lekérésekor a hívó megadhatja, hogy milyen formátumban szeretné megjeleníteni az adatokat. Az adatok forrása azonban meghatározza a tárolóeszközt, amelyet a hívó által megadott kimenő paraméterben ad vissza.
Önmagában IDataObject biztosítja az összes eszközt, amely a Windows vágólapátvitelek vagy összetett dokumentumátvitelek alkalmazásaiban való implementálásához szükséges. Ha támogatni szeretné az áthúzásos átvitelt is, implementálnia kell az IDropSource és IDropTarget interfészeket, valamint IDataObject.
Az IDataObject felület OLE vágólap API-kkal kombinálva biztosítja a Windows vágólap API-k összes funkcióját. Általában nem szükséges mindkét vágólap API-t használni. Az áthúzásos átvitelt vagy az OLE összetett dokumentumokat támogató adatszolgáltatóknak implementálniuk kell az IDataObject felületet. Ha az alkalmazás jelenleg csak a vágólap-átvitelt támogatja, de a későbbi kiadásokban elhúzásos vagy összetett dokumentumokat kíván hozzáadni, érdemes lehet implementálnia IDataObject és az OLE vágólap API-kat, hogy minimalizálja a későbbi javítással és hibakereséssel töltött időt. Az IDataObject is érdemes lehet implementálni, hogy a globális memóriától eltérő átviteli adathordozót használjon.
Az alábbi táblázat összefoglalja a használni kívánt adatátviteli típusokat attól függően, hogy milyen típusú adatátvitelt szeretne támogatni:
| Támogatás | Használ |
|---|---|
| Összetett dokumentumok |
IDataObject |
| Átvitelek húzása és húzása |
IDataObject, IDropSource, IDropTarget, DoDragDrop (vagy azzal egyenértékű) |
| Vágólap átvitele kizárólag globális memóriával |
Clipboard API- |
| A vágólap a globális memóriától eltérő exchange-adathordozókat használ. |
IDataObject |
| A vágólap átvitele most már megtörtént, de később húzással vagy összetett dokumentumokkal |
IDataObject és a fent felsorolt interfészek és függvények a "Drag and drop transfers" (Áthúzás és átvitel) kifejezéshez |
Amikor egy felhasználó adatátviteli műveletet kezdeményez, a forrásalkalmazás létrehozza az IDataObject egy példányát, amelyen keresztül az adatok elérhetővé válnak egy vagy több formátumban. A vágólap-átvitel során az alkalmazás meghívja az OleSetClipboard függvényt, hogy átadjon egy adatobjektum-mutatót az OLE-nek. (OleSetClipboard az OLE 1- és nem OLE-alkalmazásokhoz is kínál szabványos vágólap-adatformátumokat.) Az áthúzásos átvitel során az alkalmazás ehelyett a DoDragDrop függvényt hívja meg.
Az átvitel fogadó oldalán a cél az IDataObject mutatót fogadja az IDropTarget::D rop meghívásának argumentumaként, vagy az OleSetClipboard függvény meghívásával, attól függően, hogy az átvitel húzással vagy a vágólapon történik- e. Miután megkapta ezt a mutatót, a cél meghívja IDataObject::EnumFormatEtc, hogy megtudja, milyen formátumok érhetők el a lekéréshez és milyen típusú adathordozókhoz. Ezzel az információval felvértezve a fogadó alkalmazás meghívja az adatokat IDataObject::GetData.