Drag & Drop-Operationen für das Struktursteuerelement

Ein Struktursteuerelement (CTreeCtrl) sendet eine Benachrichtigung, wenn der Benutzer mit dem Ziehen eines Elements beginnt. Das Steuerelement sendet eine TVN_BEGINDRAG Benachrichtigung, wenn der Benutzer mit dem Ziehen eines Elements mit der linken Maustaste und einer TVN_BEGINRDRAG Benachrichtigung beginnt, wenn der Benutzer mit der rechten Schaltfläche mit dem Ziehen beginnt. Sie können verhindern, dass ein Struktursteuerelement diese Benachrichtigungen sendet, indem Sie dem Struktursteuerelement die TVS_DISABLEDRAGDROP Formatvorlage zusenden.

Sie erhalten ein Bild, das während eines Ziehvorgangs angezeigt werden soll, indem Sie die CreateDragImage-Memberfunktion aufrufen. Das Struktursteuerelement erstellt eine Ziehbitmap basierend auf der Beschriftung des gezogenen Elements. Anschließend erstellt das Struktursteuerelement eine Bildliste, fügt die Bitmap hinzu und gibt einen Zeiger auf das CImageList -Objekt zurück.

Sie müssen den Code angeben, der das Element tatsächlich zieht. Dies umfasst in der Regel die Verwendung der Ziehfunktionen der Bildlistenfunktionen und die Verarbeitung der WM_MOUSEMOVE und WM_LBUTTONUP (oder WM_RBUTTONUP) Nachrichten, die nach dem Starten des Ziehvorgangs gesendet wurden. Weitere Informationen zu den Bildlistenfunktionen finden Sie unter "CImageList " in den MFC-Referenz - und Bildlisten im Windows SDK. Weitere Informationen zum Ziehen eines Struktursteuerelementelements finden Sie unter Ziehen des Strukturansichtselements, auch im Windows SDK.

Wenn Elemente in einem Struktursteuerelement die Ziele eines Drag-and-Drop-Vorgangs sein sollen, müssen Sie wissen, wann sich der Mauscursor auf einem Zielelement befindet. Sie können herausfinden, indem Sie die HitTest-Memberfunktion aufrufen. Sie geben entweder einen Punkt und eine ganze Zahl oder die Adresse einer TVHITTESTINFO-Struktur an, die die aktuellen Koordinaten des Mauszeigers enthält. Wenn die Funktion zurückgegeben wird, enthält die ganze Zahl oder Struktur ein Flag, das die Position des Mauscursors relativ zum Struktursteuerelement angibt. Wenn sich der Cursor über einem Element im Struktursteuerelement befindet, enthält die Struktur auch den Handle des Elements.

Sie können angeben, dass ein Element das Ziel eines Drag-and-Drop-Vorgangs ist, indem Sie die SetItem-Memberfunktion aufrufen, um den Zustand auf den TVIS_DROPHILITED Wert festzulegen. Ein Element mit diesem Zustand wird in der Formatvorlage gezeichnet, die verwendet wird, um ein Drag-and-Drop-Ziel anzugeben.

Siehe auch

Verwenden von CTreeCtrl
Steuerelemente