Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.