Schowek: korzystanie z mechanizmu schowka OLE
Obiekt OLE używa standardowych formatów i niektórych formatów specyficznych dla ole do przesyłania danych za pośrednictwem Schowka.
Podczas wycinania lub kopiowania danych z aplikacji dane są przechowywane w Schowku do późniejszego użycia w operacjach wklejania. Te dane są w różnych formatach. Gdy użytkownik zdecyduje się wkleić dane ze Schowka, aplikacja może wybrać, które z tych formatów mają być używane. Aplikacja powinna być napisana w celu wybrania formatu, który udostępnia najwięcej informacji, chyba że użytkownik prosi o określony format przy użyciu funkcji Wklej specjalne. Przed kontynuowaniem warto przeczytać tematy Dotyczące obiektów danych i źródeł danych (OLE). Opisują one podstawy działania transferów danych i sposób ich implementowania w aplikacjach.
System Windows definiuje szereg standardowych formatów, które mogą służyć do przesyłania danych za pośrednictwem Schowka. Należą do nich metapliki, tekst, mapy bitowe i inne. Obiekt OLE definiuje również wiele formatów specyficznych dla ole. W przypadku aplikacji, które potrzebują więcej szczegółów niż podane w tych standardowych formatach, dobrym pomysłem jest zarejestrowanie własnych niestandardowych formatów Schowka. Użyj funkcji Interfejsu API Win32 RegisterClipboardFormat , aby to zrobić.
Na przykład program Microsoft Excel rejestruje niestandardowy format arkuszy kalkulacyjnych. Ten format zawiera znacznie więcej informacji niż na przykład mapa bitowa. Gdy te dane są wklejane do aplikacji obsługującej format arkusza kalkulacyjnego, wszystkie formuły i wartości z arkusza kalkulacyjnego są zachowywane i mogą być aktualizowane w razie potrzeby. Program Microsoft Excel umieszcza również dane w Schowku w formatach, aby można je było wkleić jako element OLE. Każdy kontener dokumentów OLE może wkleić te informacje jako element osadzony. Ten osadzony element można zmienić przy użyciu programu Microsoft Excel. Schowek zawiera również prostą mapę bitową obrazu wybranego zakresu w arkuszu kalkulacyjnym. Można to również wkleić do kontenerów dokumentów OLE lub edytorów map bitowych, takich jak Paint. W przypadku mapy bitowej nie ma jednak możliwości manipulowania danymi jako arkusza kalkulacyjnego.
Aby pobrać maksymalną ilość informacji ze Schowka, aplikacje powinny sprawdzać te niestandardowe formaty przed wklejaniem danych ze Schowka.
Aby na przykład włączyć polecenie Wycinanie, możesz napisać procedurę obsługi podobną do następującej:
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();
}