Schránka: Kopírování a vkládání dat
Toto téma popisuje minimální práci potřebnou k implementaci kopírování a vkládání ze schránky v aplikaci OLE. Než budete pokračovat, doporučujeme, abyste si přečetli témata datových objektů a zdrojů dat (OLE ).
Před implementací kopírování nebo vkládání musíte nejprve poskytnout funkce pro zpracování možností Kopírovat, Vyjmout a Vložit v nabídce Úpravy.
Kopírování nebo řezání dat
Kopírování dat do schránky
Určete, zda jsou data, která se mají zkopírovat, nativními nebo vloženými nebo propojenými položkami.
Pokud jsou data vložená nebo propojená, získejte ukazatel na
COleClientItem
vybraný objekt.Pokud jsou data nativní a aplikace je server, vytvořte nový objekt odvozený z
COleServerItem
obsahující vybraná data. V opačném případě vytvořteCOleDataSource
objekt pro data.
Volání členské funkce vybrané položky
CopyToClipboard
Pokud uživatel zvolil operaci Vyjmout místo operace kopírování, odstraňte vybraná data z vaší aplikace.
Pokud chcete zobrazit příklad této sekvence, podívejte se na OnEditCut
funkce a OnEditCopy
funkce v ukázkových programech MFC OLE OCLIENT a HIERSVR. Všimněte si, že tyto ukázky udržují ukazatel na aktuálně vybraná data, takže krok 1 je již dokončený.
Vkládání dat
Vkládání dat je složitější než jejich kopírování, protože potřebujete zvolit formát, který chcete použít při vkládání dat do aplikace.
Vložení dat ze schránky
Ve třídě zobrazení implementujte
OnEditPaste
zpracování uživatelů, kteří zvolí možnost Vložit z nabídky Upravit.OnEditPaste
Ve funkci vytvořteCOleDataObject
objekt a zavolejte jehoAttachClipboard
členovou funkci, aby tento objekt propojil s daty ve schránce.Volání
COleDataObject::IsDataAvailable
, které zkontroluje, jestli je k dispozici určitý formát.Alternativně můžete hledat
COleDataObject::BeginEnumFormats
jiné formáty, dokud nenajdete nejvhodnější pro vaši aplikaci.Proveďte vložení formátu.
Příklad toho, jak to funguje, najdete v implementaci členských funkcí ve třídách zobrazení definovaných OnEditPaste
v ukázkových programech MFC OLE OCLIENT a HIERSVR.
Tip
Hlavní výhodou oddělení operace vložení do vlastní funkce je to, že stejný kód pro vložení lze použít při vyřazení dat v aplikaci během operace přetažení myší. Stejně jako v OCLIENT a HIERSVR může vaše OnDrop
funkce také volat DoPasteItem
a opakovaně používat kód napsaný pro implementaci operací Vložení.
Chcete-li zpracovat možnost Vložit jinak v nabídce Upravit, přečtěte si téma Dialogová okna v OLE.