Sdílet prostřednictvím


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

  1. 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řte COleDataSource objekt pro data.

  2. Volání členské funkce vybrané položky CopyToClipboard

  3. 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

  1. Ve třídě zobrazení implementujte OnEditPaste zpracování uživatelů, kteří zvolí možnost Vložit z nabídky Upravit.

  2. OnEditPaste Ve funkci vytvořte COleDataObject objekt a zavolejte jeho AttachClipboard členovou funkci, aby tento objekt propojil s daty ve schránce.

  3. 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.

  4. 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 DoPasteItema 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.

O čem chcete vědět víc

Viz také

Schránka: Použití mechanismu schránky OLE