IOleInPlaceObjectWindowless::GetDropTarget-Methode (ocidl.h)
Ruft die IDropTarget-Schnittstelle für ein direktes aktives, fensterloses Objekt ab, das Drag and Drop unterstützt.
Syntax
HRESULT GetDropTarget(
[out] IDropTarget **ppDropTarget
);
Parameter
[out] ppDropTarget
Ein Zeiger auf eine IDropTarget-Zeigervariable , die den Schnittstellenzeiger auf das fensterlose Objekt empfängt.
Rückgabewert
Diese Methode gibt S_OK bei Erfolg zurück. Weitere mögliche Rückgabewerte:
Rückgabecode | Beschreibung |
---|---|
|
Das fensterlose Objekt unterstützt das Ziehen und Ablegen nicht. |
Hinweise
Ein Objekt mit Fenster registriert seine IDropTarget-Schnittstelle , indem es die RegisterDragDrop-Funktion aufruft und sein Fensterhandle als Parameter angibt. Durch die Registrierung der IDropTarget-Schnittstelle kann das Objekt an Drag and Drop-Vorgängen teilnehmen. Da es kein Fenster hat, wenn es aktiv ist, kann ein fensterloses Objekt seine IDropTarget-Schnittstelle nicht registrieren. Daher kann es nicht direkt an Drag-and-Drop-Vorgängen ohne Unterstützung aus seinem Container teilnehmen.
Die folgenden Ereignisse treten während eines Drag-and-Drop-Vorgangs mit fensterlosen Objekten auf:
- Der Container registriert seine eigene IDropTarget-Schnittstelle über die RegisterDragDrop-Funktion .
- In der Implementierung der eigenen IDropTarget::D ragEnter - oder IDropTarget::D ragOver-Methoden erkennt der Container, ob der Mauszeiger gerade ein eingebettetes Objekt eingegeben hat.
- Wenn das Objekt inaktiv ist, ruft der Container die IPointerInactive::GetActivationPolicy-Methode des Objekts auf. Das -Objekt gibt das POINTERINACTIVE_ACTIVATEONDRAG-Flag zurück. Der Container aktiviert dann das Objekt an Ort und Stelle. Wenn das Objekt bereits aktiv war, muss der Container diesen Schritt nicht ausführen.
- Nachdem das Objekt aktiv ist, muss der Container die IDropTarget-Schnittstelle des Objekts abrufen.
- Ein fensterloses Objekt, das ein Ablageziel sein möchte, implementiert weiterhin die IDropTarget-Schnittstelle , registriert sie jedoch nicht und gibt es nicht über Aufrufe von IUnknown::QueryInterface zurück. Stattdessen kann der Container diese Schnittstelle abrufen, indem er die IOleInPlaceObjectWindowless::GetDropTarget-Methode des Objekts aufruft . Das Objekt gibt einen Zeiger auf seine eigene IDropTarget-Schnittstelle zurück, wenn es an Drag and Drop-Vorgängen teilnehmen möchte. Der Container kann diesen Schnittstellenzeiger zur späteren Verwendung zwischenspeichern. Beispielsweise kann der Container bei nachfolgenden Aufrufen der Methoden IDropTarget::D ragEnter oder IDropTarget::D ragLeave den zwischengespeicherten Zeiger verwenden, anstatt die GetDropTarget-Methode des Objekts erneut aufzurufen.
- Der Container ruft dann die IDropTarget::D ragEnter-Methode des Objekts auf und übergibt den zurückgegebenen Wert für pdwEffect von seiner eigenen IDropTarget::D ragOver- oder IDropTarget::D ragEnter-Methode . Ab diesem Zeitpunkt leitet der Container alle nachfolgenden IDropTarget::D ragOver-Aufrufe an das fensterlose Objekt weiter, bis die Maus das Objekt verlässt oder ein Drop auf dem Objekt auftritt. Wenn die Maus das Objekt verlässt, ruft der Container die IDropTarget::D ragLeave des Objekts auf und gibt dann die IDropTarget-Schnittstelle des Objekts frei. Wenn der Drop auftritt, leitet der Container den IDropTarget::D rop-Aufruf an das -Objekt weiter.
- Schließlich deaktiviert der Container das Objekt.
Ein Objekt, das S_FALSE von IDropTarget::D ragEnter zurückgibt, sollte vorbereitet sein, um nachfolgende Aufrufe von IDropTarget::D ragEnter ohne IDropTarget::D ragLeave dazwischen zu empfangen. Wenn sich die Maus beim nächsten Aufruf des IDropTarget::D ragOver des Containers immer noch über demselben Objekt befindet, kann der Container versuchen, IDropTarget::D ragEnter erneut für das Objekt aufzurufen.
Hinweise für Anrufer
Ein Container kann den Zeiger auf die IDropTarget-Schnittstelle des Objekts zur späteren Verwendung zwischenspeichern.Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | ocidl.h |