Sdílet prostřednictvím


Schránka: Pomocí schránky mechanismu OLE

OLE používá standardní formáty a některé specifické OLE formáty pro přenos dat prostřednictvím schránky.

Při vyjmutí nebo kopírování dat z aplikace data uložena do schránky pro pozdější operace vkládání.Tato data jsou v různých formátech.Když uživatel vybere data ze schránky vložit, aplikace můžete zvolit, které tyto formáty použít.Aplikace by měly být zapsány do zvolit formát, který poskytuje většina informací, pokud uživatel výslovně požádá o určitý formát pomocí Vložit jinak.Než budete pokračovat, můžete přečíst objekty Data a datové zdroje (OLE) témata.Popisují základy jak přenáší data práce a jejich implementaci v aplikacích.

Windows definuje počet standardní formáty, které lze použít pro přenos dat prostřednictvím schránky.Zahrnují metasoubory, text, rastrové obrázky a jiné.OLE definuje počet OLE specifické formáty i.Aplikace, které je třeba podrobněji než dané tyto standardní formáty je vhodné zaregistrovat vlastní vlastní formáty schránky.Použijte funkci rozhraní Win32 API RegisterClipboardFormat provést.

Například aplikace Microsoft Excel registruje vlastní formát pro tabulky.Tento formát obsahuje mnohem více informací než například, nemá bitmapy.Tato data po vložení do aplikace, která podporuje formát tabulky, vzorce a hodnoty z tabulky jsou zachovány a může být v případě potřeby aktualizována.Aplikace Microsoft Excel také vloží data do schránky ve formátech, takže jej lze vložit jako položka OLE.Každý kontejner OLE dokumentu můžete vložit tyto informace vložené položky.Tato vložená položka lze změnit pomocí aplikace Microsoft Excel.Schránka obsahuje také jednoduché rastrový obrázek vybrané oblasti v tabulce.Toto lze také vložit do dokumentu kontejnery OLE nebo do bitmapové editory jako malby.Z bitmap však není nijak manipulovat s daty jako tabulky.

Chcete-li získat maximální množství informací ze schránky, aplikací zkontrolujte tyto vlastní formáty před vložením dat ze schránky.

Například chcete-li příkaz Vyjmout, můžete vytvořit obslužnou rutinu přibližně takto:

void CMyListView::OnEditCut()
{
   // Create an OLE data source on the heap
   COleDataSource* pData = new COleDataSource;
   // Get the currently selected data
   HGLOBAL hGlob = GlobalAlloc(GMEM_FIXED, 64);
   strcpy_s((char*)hGlob, 64, "Current selection\r\n");
   // For the appropriate data formats...
   pData->CacheGlobalData( CF_TEXT, hGlob );
   // The Clipboard now owns the allocated memory
   // and will delete this data object
   // when new data is put on the Clipboard
   pData->SetClipboard();
}

Co chcete vědět více?

Viz také

Koncepty

Schránka