Schowek: kopiowanie i wklejanie danych
W tym temacie opisano minimalną pracę niezbędną do zaimplementowania kopiowania do Schowka i wklejania do schowka w aplikacji OLE. Przed kontynuowaniem zaleca się przeczytanie tematów Dotyczących obiektów danych i źródeł danych (OLE ).
Przed zaimplementowaniem kopiowania lub wklejania należy najpierw udostępnić funkcje do obsługi opcji Kopiuj, Wytnij i Wklej w menu Edycja.
Kopiowanie lub wycinanie danych
Aby skopiować dane do Schowka
Ustal, czy dane do skopiowania są danymi natywnymi, czy też elementem osadzonym lub połączonym.
Jeśli dane są osadzone lub połączone, uzyskaj wskaźnik do wybranego
COleClientItem
obiektu.Jeśli dane są natywne, a aplikacja jest serwerem, utwórz nowy obiekt pochodzący z
COleServerItem
zawierających wybrane dane. W przeciwnym razie utwórzCOleDataSource
obiekt dla danych.
Wywołaj funkcję składową wybranego elementu
CopyToClipboard
.Jeśli użytkownik wybrał operację wycinania zamiast operacji kopiowania, usuń wybrane dane z aplikacji.
Aby zobaczyć przykład tej sekwencji, zobacz OnEditCut
funkcje i OnEditCopy
w przykładowych programach MFC OLE OCLIENT i HIERSVR. Należy pamiętać, że te przykłady obsługują wskaźnik do aktualnie wybranych danych, więc krok 1 został już ukończony.
Wklejanie danych
Wklejanie danych jest bardziej skomplikowane niż kopiowanie, ponieważ musisz wybrać format, który ma być używany podczas wklejania danych do aplikacji.
Aby wkleić dane ze Schowka
W klasie widoków zaimplementuj obsługę
OnEditPaste
użytkowników wybierających opcję Wklej z menu Edytuj.OnEditPaste
W funkcji utwórzCOleDataObject
obiekt i wywołaj jegoAttachClipboard
funkcję składową, aby połączyć ten obiekt z danymi w Schowku.Wywołaj metodę
COleDataObject::IsDataAvailable
, aby sprawdzić, czy jest dostępny określony format.Alternatywnie możesz użyć
COleDataObject::BeginEnumFormats
polecenia , aby wyszukać inne formaty, dopóki nie znajdziesz jednego najbardziej odpowiedniego dla aplikacji.Wykonaj wklejanie formatu.
Aby zapoznać się z przykładem tego działania, zobacz implementację OnEditPaste
funkcji składowych w klasach widoków zdefiniowanych w przykładowych programach MFC OLE OCLIENT i HIERSVR.
Napiwek
Główną zaletą oddzielenia operacji wklejania do własnej funkcji jest to, że ten sam kod wklejania może być używany, gdy dane są porzucane w aplikacji podczas operacji przeciągania i upuszczania. Podobnie jak w przypadku OCLIENT i HIERSVR, funkcja OnDrop
może również wywołać DoPasteItem
metodę , ponownie za pomocą kodu napisanego w celu zaimplementowania operacji wklejania.
Aby obsłużyć opcję Wklej specjalne w menu Edycja, zobacz okna dialogowe tematu w ole.