Herausziehen von Bildern aus einer Bildliste
CImageList enthält Funktionen zum Ziehen eines Bilds auf dem Bildschirm. Die Ziehfunktionen verschieben ein Bild reibungslos, in Farbe und ohne Blinken des Cursors. Sowohl maskierte als auch ungemaskete Bilder können gezogen werden.
Die BeginDrag-Memberfunktion beginnt einen Ziehvorgang. Die Parameter enthalten den Index des zu ziehenden Bilds und die Position des Hotspots innerhalb des Bilds. Der Hotspot ist ein einzelnes Pixel, das von den Ziehfunktionen als genaue Bildschirmposition des Bilds erkannt wird. In der Regel legt eine Anwendung den Hotspot so fest, dass sie mit dem Hotspot des Mauscursors übereinstimmt. Die DragMove-Memberfunktion verschiebt das Bild an eine neue Position.
Die DragEnter-Memberfunktion legt die Anfangsposition des Ziehbilds in einem Fenster fest und zeichnet das Bild an der Position. Die Parameter enthalten einen Zeiger auf das Fenster, in dem das Bild gezeichnet werden soll, und einen Punkt, der die Koordinaten der Anfangsposition innerhalb des Fensters angibt. Die Koordinaten sind relativ zur oberen linken Ecke des Fensters, nicht zum Clientbereich. Das gleiche gilt für alle Bildziehfunktionen, die Koordinaten als Parameter übernehmen. Dies bedeutet, dass Sie beim Angeben der Koordinaten die Breite von Fensterelementen wie Rahmen, Titelleiste und Menüleiste ausgleichen müssen. Wenn Sie beim Aufrufen DragEnter
ein NULL-Fensterziehpunkt angeben, zeichnen die Ziehfunktionen das Bild im Gerätekontext, der dem Desktopfenster zugeordnet ist, und die Koordinaten sind relativ zur oberen linken Ecke des Bildschirms.
DragEnter
Sperrt alle anderen Aktualisierungen des angegebenen Fensters während des Ziehvorgangs. Wenn Sie während eines Ziehvorgangs eine Zeichnung ausführen müssen, z. B. das Hervorheben des Ziels eines Drag-and-Drop-Vorgangs, können Sie das gezogene Bild vorübergehend mithilfe der DragLeave-Memberfunktion ausblenden. Sie können auch die DragShowNoLock-Memberfunktion verwenden.
Rufen Sie EndDrag auf, wenn Sie mit dem Ziehen des Bilds fertig sind.
Die SetDragCursorImage-Memberfunktion erstellt ein neues Ziehbild, indem das angegebene Bild (in der Regel ein Mauscursorbild) mit dem aktuellen Ziehbild kombiniert wird. Da die Ziehfunktionen während eines Ziehvorgangs das neue Bild verwenden, sollten Sie die Windows ShowCursor-Funktion verwenden, um den eigentlichen Mauscursor nach dem Aufruf SetDragCursorImage
auszublenden. Andernfalls scheint das System zwei Mauszeiger für die Dauer des Ziehvorgangs zu haben.
Wenn eine Anwendung aufruft BeginDrag
, erstellt das System eine temporäre, interne Bildliste und kopiert das angegebene Ziehbild in die interne Liste. Mit der GetDragImage-Memberfunktion können Sie einen Zeiger auf die temporäre Bildliste abrufen. Die Funktion ruft auch die aktuelle Ziehposition und den Offset des Ziehbilds relativ zur Ziehposition ab.