Udostępnij przez


Interfejsy transferu danych

Interfejs IDataObject udostępnia użytkownikom danych metody pobierania i ustawiania danych obiektu, określania, które formaty obiektu obsługuje, oraz rejestrowania i odbierania powiadomień w przypadku zmiany danych w obiekcie. Podczas uzyskiwania danych obiekt wywołujący może określić format, w którym chce renderować dane. Źródło danych określa jednak nośnik magazynu, który zwraca w parametrze out dostarczonym przez obiekt wywołujący.

Sama IDataObject dostarcza wszystkie narzędzia potrzebne do zaimplementowania transferów schowka systemu Windows lub złożonych transferów dokumentów w aplikacjach. Jeśli chcesz również obsługiwać transfery przeciągania i upuszczania, należy zaimplementować interfejsy IDropSource i IDropTargetIDropTarget wraz z interfejsami IDataObject.

Interfejs IDataObject połączony z interfejsami API schowka OLE zapewnia wszystkie możliwości interfejsów API schowka systemu Windows. Zazwyczaj nie jest konieczne używanie obu interfejsów API schowka. Dostawcy danych obsługujący transfery przeciągania i upuszczania lub dokumenty złożone OLE muszą zaimplementować interfejs IDataObject. Jeśli aplikacja obsługuje teraz tylko transfery schowka, ale zamierzasz dodać przeciąganie i upuszczanie lub złożone dokumenty w kolejnych wersjach, możesz zaimplementować IDataObject i interfejsy API schowka OLE, aby zminimalizować ilość czasu poświęcanego na ponowne odtwarzanie i debugowanie później. Możesz również zaimplementować IDataObject w celu korzystania z nośnika transferu innego niż pamięć globalna.

W poniższej tabeli podsumowano, które z nich mają być używane, w zależności od typów transferu danych, które mają być obsługiwane:

Aby obsługiwać Używać
Dokumenty złożone
IDataObject
Przeciąganie i upuszczanie transferów
IDataObject, IDropSource, IDropTarget, DoDragDrop (lub równoważnej)
Transfery schowka z użyciem pamięci globalnej wyłącznie
interfejs API schowka
Transfery schowka przy użyciu nośników wymiany innych niż pamięć globalna.
IDataObject
Schowek przenosi teraz, ale przeciągnij i upuść lub upuść dokumenty złożone później
IDataObject oraz interfejsy i funkcje wymienione powyżej dla funkcji "Przeciągnij i upuść transfery"

Gdy użytkownik inicjuje operację transferu danych, aplikacja źródłowa tworzy wystąpienie IDataObject i za jego pomocą udostępnia dane w jednym lub kilku formatach. W transferze schowka aplikacja wywołuje funkcjęOleSetClipboard, aby przekazać wskaźnik obiektu danych do obiektu OLE. (OleSetClipboard oferuje również standardowe formaty danych schowka dla aplikacji OLE w wersji 1 i innych niż OLE. W przypadku transferu przeciągania i upuszczania aplikacja wywołuje zamiast tego funkcję DoDragDrop.

Po stronie odbierającej transferu miejsce docelowe odbiera wskaźnik IDataObject albo jako argument wywołania IDropTarget::D rop lub wywołując funkcję OleSetClipboard, w zależności od tego, czy transfer jest metodą przeciągania i upuszczania, czy schowka. Po uzyskaniu tego wskaźnika docelowe wywołania IDataObject::EnumFormatEtc, aby dowiedzieć się, jakie formaty są dostępne do pobierania i jakiego rodzaju nośnika można uzyskać. Uzbrojony w te informacje aplikacja odbierający żąda danych za pomocą wywołania IDataObject::GetData.

transferu danych