Schowek: dodawanie innych formatów
W tym temacie wyjaśniono, jak rozszerzyć listę obsługiwanych formatów, szczególnie w przypadku obsługi ole. Schowek tematu : Kopiowanie i wklejanie danych opisuje minimalną implementację niezbędną do obsługi kopiowania i wklejania ze Schowka. Jeśli wszystko jest implementowane, jedynymi formatami umieszczonymi w Schowku są CF_METAFILEPICT, CF_EMBEDSOURCE, CF_OBJECTDESCRIPTOR i prawdopodobnie CF_LINKSOURCE. Większość aplikacji będzie potrzebować więcej formatów w Schowku niż te trzy.
Rejestrowanie formatów niestandardowych
Aby utworzyć własne formaty niestandardowe, wykonaj tę samą procedurę, której należy użyć podczas rejestrowania dowolnego niestandardowego formatu Schowka: przekaż nazwę formatu do funkcji RegisterClipboardFormat i użyj jej wartości zwracanej jako identyfikatora formatu.
Umieszczanie formatów w Schowku
Aby dodać więcej formatów do tych umieszczonych w Schowku, należy zastąpić OnGetClipboardData
funkcję w klasie pochodzącej z COleClientItem
klasy lub COleServerItem
(w zależności od tego, czy dane do skopiowania są natywne). W tej funkcji należy użyć poniższej procedury.
Aby umieścić formaty w Schowku
Utwórz
COleDataSource
obiekt.Przekaż to źródło danych do funkcji, która dodaje natywne formaty danych do listy obsługiwanych formatów, wywołując funkcję
COleDataSource::CacheGlobalData
.Dodaj standardowe formaty, wywołując
COleDataSource::CacheGlobalData
każdy standardowy format, który chcesz obsługiwać.
Ta technika jest używana w przykładowym programie MFC OLE HIERSVR (zbadaj OnGetClipboardData
funkcję składową klasy CServerItem ). Jedyną różnicą w tym przykładzie jest to, że krok trzeci nie jest zaimplementowany, ponieważ HIERSVR nie obsługuje żadnych innych formatów standardowych.