Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Funkcja przeciągania i upuszczania OLE jest przede wszystkim skrótem do kopiowania i wklejania danych. Jeśli używasz Schowka do kopiowania lub wklejania danych, wymagane jest wykonanie kilku kroków. Wybierz dane, a następnie wybierz pozycję Wytnij lub Kopiuj z menu Edycja . Następnie przejdziesz do docelowej aplikacji lub okna i umieść kursor w lokalizacji docelowej. Na koniec wybierz pozycję Edytuj>wklej z menu.
Funkcja przeciągania i upuszczania OLE różni się od mechanizmu przeciągania i upuszczania Menedżera plików. Menedżer plików może obsługiwać tylko nazwy plików i jest przeznaczony specjalnie do przekazywania nazw plików do aplikacji. Przeciąganie i upuszczanie w OLE jest znacznie bardziej ogólne. Umożliwia przeciąganie i upuszczanie wszelkich danych, które można również umieścić w Schowku.
W przypadku używania przeciągania i upuszczania OLE należy usunąć dwa kroki procesu. Wybierasz dane z okna źródłowego ("źródło przeciągania"), a następnie przeciągasz je do celu docelowego ("cel upuszczania"). Upuść go, zwalniając przycisk myszy. Operacja eliminuje konieczność korzystania z menu i jest szybsza niż sekwencja kopiowania/wklejania. Istnieje tylko jedno wymaganie: zarówno źródło upuszczania, jak i miejsce docelowe upuszczania muszą być otwarte i przynajmniej częściowo widoczne na ekranie.
Przeciąganie i upuszczanie OLE umożliwia łatwe przesyłanie danych z jednej lokalizacji do innej: w obrębie dokumentu, między różnymi dokumentami lub między aplikacjami. Można go zaimplementować w kontenerze lub aplikacji serwera. Każda aplikacja może być źródłem upuszczania, obiektem docelowym upuszczania lub obydwoma. Jeśli aplikacja implementuje obsługę typu drop-source i drop-target, można przeciągać i upuszczać między oknami podrzędnymi lub w jednym oknie. Ta funkcja znacznie ułatwia korzystanie z aplikacji.
Artykuły Obiekty danych i źródła danych (OLE) wyjaśniają sposób implementowania transferu danych w aplikacjach. Warto również zapoznać się z przykładami MFC OLE OCLIENT i HIERSVR.
Implementowanie źródła upuszczania
Aby aplikacja dostarczała dane do operacji przeciągania i upuszczania, należy zaimplementować źródło upuszczania. Podstawowa implementacja źródła upuszczania jest stosunkowo prosta. Pierwszym krokiem jest określenie, jakie zdarzenia rozpoczynają operację przeciągania. Zalecane wytyczne dotyczące interfejsu użytkownika definiują początek operacji przeciągania jako moment, gdy zdarzenie WM_LBUTTONDOWN wystąpi w punkcie wewnątrz wybranych danych. Przykłady MFC OLE OCLIENT i HIERSVR są zgodne z tymi wytycznymi.
Jeśli aplikacja jest kontenerem, a wybrane dane są połączonym lub osadzonym obiektem typu COleClientItem
, wywołaj jego DoDragDrop
funkcję składową. W przeciwnym razie skonstruuj obiekt COleDataSource
, zainicjuj go za pomocą zaznaczenia i wywołaj funkcję składową DoDragDrop
obiektu źródła danych. Jeśli aplikacja jest serwerem, użyj polecenia COleServerItem::DoDragDrop
. Aby uzyskać informacje na temat dostosowywania standardowego zachowania przeciągania i upuszczania, zobacz sekcję Dostosowywanie przeciągania i upuszczania.
Jeśli DoDragDrop
zwraca DROPEFFECT_MOVE, usuń dane źródłowe z dokumentu źródłowego natychmiast. Żadna inna wartość zwracana z DoDragDrop
nie wpływa na źródło upuszczania.
Aby uzyskać więcej informacji, zobacz Obiekty danych OLE i źródła danych: Tworzenie i niszczenie oraz obiekty danych OLE i źródła danych: Manipulowanie.
Implementowanie miejsca docelowego upuszczania
Zaimplementowanie celu upuszczania wymaga nieco więcej pracy niż źródła upuszczania, ale nadal jest stosunkowo proste.
Aby zaimplementować cel upuszczania OLE
Jeśli jeszcze go nie ma, dodaj wywołanie funkcji
AfxOleInit
składowejInitInstance
aplikacji. To wywołanie jest wymagane do zainicjowania bibliotek OLE.Dodaj zmienną składową do każdego widoku w aplikacji, która ma być obiektem docelowym upuszczania. Ta zmienna składowa musi być typu
COleDropTarget
lub klasy pochodnej.Z funkcji klasy widoku, która obsługuje komunikat WM_CREATE (zazwyczaj
OnCreate
), wywołaj funkcję składową nowej zmiennej składowejRegister
.Revoke
zostanie wywołane automatycznie dla ciebie, gdy widok zostanie zniszczony.Nadpisz następujące funkcje. Jeśli chcesz to samo zachowanie w całej aplikacji, przesłoń te funkcje w klasie view. Jeśli chcesz zmodyfikować zachowanie w izolowanych przypadkach lub chcesz włączyć usuwanie w innych niż
CView
oknach, nadpisz te funkcje w klasie pochodnejCOleDropTarget
.Przełącz Aby zezwolić OnDragEnter
Operacje przeciągania i upuszczania w oknie. Wywołana po pierwszym wejściu kursora do okna. OnDragLeave
Specjalne zachowanie, gdy operacja przeciągania opuszcza określone okno. OnDragOver
Operacje przeciągania i upuszczania w oknie. Wywoływana, gdy kursor jest przeciągany przez okno. OnDrop
Obsługa danych upuszczonych w określonym oknie. OnScrollBy
Specjalne zachowanie, gdy przewijanie jest konieczne w oknie docelowym.
Zobacz plik MAINVIEW.CPP, który jest częścią przykładowego programu MFC OLE OCLIENT, jako przykład działania tych funkcji razem.
Aby uzyskać więcej informacji, zobacz Obiekty danych OLE i źródła danych: Tworzenie i niszczenie oraz obiekty danych OLE i źródła danych: Manipulowanie.
Dostosowywanie przeciągania i upuszczania
Domyślna implementacja funkcji przeciągania i upuszczania jest wystarczająca dla większości aplikacji. Jednak niektóre aplikacje mogą wymagać zmiany tego standardowego zachowania. W tej sekcji opisano kroki niezbędne do zmiany tych wartości domyślnych. Za pomocą tej techniki możesz przekształcić aplikacje, które nie obsługują złożonych dokumentów, w źródła przeciągania.
Jeśli dostosowujesz standardowe zachowanie przeciągania i upuszczania OLE lub masz aplikację COleDataSource
inną niż OLE, musisz utworzyć obiekt zawierający dane. Gdy użytkownik rozpocznie operację przeciągania i upuszczania, kod powinien wywołać DoDragDrop
funkcję z tego obiektu zamiast z innych klas, które obsługują operacje przeciągania i upuszczania.
Opcjonalnie możesz utworzyć COleDropSource
obiekt w celu kontrolowania upuszczania i zastępowania niektórych jego funkcji w zależności od typu zachowania, które chcesz zmienić. Ten obiekt typu "drop-source" jest następnie przekazywany do COleDataSource::DoDragDrop
, aby zmienić domyślne zachowanie tych funkcji. Te różne opcje umożliwiają dużą elastyczność obsługi operacji przeciągania i upuszczania w aplikacji. Aby uzyskać więcej informacji na temat źródeł danych, zobacz artykuł Obiekty danych i źródła danych (OLE) .
Następujące funkcje można zastąpić, aby dostosować operacje przeciągania i upuszczania:
Przełącz | Aby dostosować |
---|---|
OnBeginDrag |
Jak rozpoczyna się operacja przeciągania po wywołaniu DoDragDrop . |
GiveFeedback |
Informacje zwrotne wizualne, takie jak wygląd kursora, dla różnych rezultatów przeciągania i upuszczania. |
QueryContinueDrag |
Zakończenie operacji przeciągania i upuszczania. Ta funkcja umożliwia sprawdzanie stanów kluczy modyfikatora podczas operacji przeciągania. |
Zobacz także
OLE
Obiekty danych OLE i źródła danych
Obiekty danych OLE i źródła danych: tworzenie i niszczenie
Obiekty danych OLE i źródła danych: Manipulowanie
COleClientItem::D oDragDrop
Klasa COleDataSource
COleDataSource::D oDragDrop
Klasa COleDropSource
Klasa COleDropTarget
CView::OnDragLeave