2016-04-28 8 views
0

Ich habe eine Möglichkeit, Drag & Drop auf bestimmten Knoten einer CTreeCtrl deaktivieren?CTreeCtrl Deaktivieren Drag & Drop auf bestimmten Knoten

Ich möchte verhindern, dass ein Knoten auf ein untergeordnetes Element desselben Knotens innerhalb derselben Struktur gezogen wird, und auch verhindern, dass ein Knoten in eine Listview gezogen wird, die mit demselben Knoten oder einem seiner untergeordneten Elemente verknüpft ist.

Antwort

1

Es hängt nur davon ab, wie Sie das Drop-Ziel im Mausbewegungs-Handler behandeln.

Sie können die TVN_BEGINDRAG-Funktion nicht verhindern. Wenn das Objekt überhaupt nicht gezogen werden soll, verwenden Sie immer SetDropTarget(NULL) im Mausbewegungs-Handler und wenn das Ziehen aufhört, tun Sie nichts.

Wenn das Objekt gezogen werden kann, müssen Sie nur prüfen, ob das Ziel erlaubt ist. Sie verwenden HitTest, um das Zielobjekt zu finden, und Sie können prüfen, ob es hier erlaubt ist, es abzulegen. Verwenden Sie erneut SetDropTarget. So kann der Benutzer sehen, was erlaubt ist.

Ein anderer Weg wäre die Ole Drag & Drop-Funktionen like in this sample here zu implementieren.

+0

Yeah, ich benutze bereits die OnDragOver-Überschreibung, um die Fallbestimmung zu handhaben (in anderen Fällen), wusste nur nicht, ob es eine andere Möglichkeit gab, die Dropability auf bestimmten Knoten "vorübergehend" zu deaktivieren, anstatt es auch in OnDragOver herauszufinden .. Ich nehme an, dass ich im OnDragOver rekursiv die Eltern der Knoten des Knotens im HitTest überprüfe, um zu sehen, ob er den gezogenen Knoten findet (also nicht zulässt, dass ein Elternknoten zu einem seiner Kindknoten gezogen wird). Hatte nur gehofft, dass eine solche Methode schon existierte. –

+0

Ich möchte das gleiche Verhalten wie Windows Explorer erstellen, der ein DROPEFFECT_NONE in OnDragOver zurückgibt, wenn ein Knoten über einen der untergeordneten Knoten gezogen wird. –

+0

Dann implementieren Sie Ihre eigenen Drag & Drop wie in diesem Sampler für die Liste Steuerelement http://codeproject.cachefly.net/Articles/12342/Drag-and-Drop-Listbox-Items-using-OLE – xMRi