Arrastrar imágenes de una lista de imágenes
CImageList incluye funciones para arrastrar una imagen en la pantalla. Las funciones de arrastre mueven una imagen sin problemas, en color y sin parpadear el cursor. Se pueden arrastrar imágenes enmascaradas y sin máscara.
La función miembro BeginDrag inicia una operación de arrastre. Los parámetros incluyen el índice de la imagen que se va a arrastrar y la ubicación de la zona activa dentro de la imagen. La zona activa es un solo píxel que las funciones de arrastre reconocen como la ubicación exacta de la pantalla de la imagen. Normalmente, una aplicación establece la zona activa para que coincida con la zona activa del cursor del mouse. La función miembro DragMove mueve la imagen a una nueva ubicación.
La función miembro DragEnter establece la posición inicial de la imagen de arrastre dentro de una ventana y dibuja la imagen en la posición. Los parámetros incluyen un puntero a la ventana en la que se va a dibujar la imagen y un punto que especifica las coordenadas de la posición inicial dentro de la ventana. Las coordenadas son relativas a la esquina superior izquierda de la ventana (no al área cliente). Lo mismo ocurre con todas las funciones de arrastre de imágenes que toman coordenadas como parámetros. Esto significa que debes compensar los anchos de los elementos de ventana, como el borde, la barra de título y la barra de menús, al especificar las coordenadas. Si especificas un identificador de ventana NULL al llamar a DragEnter
, las funciones de arrastre dibujan la imagen en el contexto del dispositivo asociado a la ventana de escritorio y las coordenadas son relativas a la esquina superior izquierda de la pantalla.
DragEnter
bloquea todas las demás actualizaciones de la ventana especificada durante la operación de arrastre. Si necesitas realizar algún dibujo durante una operación de arrastre, como resaltar el destino de una operación de arrastrar y colocar, puede ocultar temporalmente la imagen arrastrada mediante la función miembro DragLeave. También puedes usar la función miembro DragShowNoLock.
Llama a EndDrag cuando haya terminado de arrastrar la imagen.
La función miembro SetDragCursorImage crea una nueva imagen de arrastre combinando la imagen dada (normalmente, una imagen de cursor del mouse) con la imagen de arrastre actual. Dado que las funciones de arrastre usan la nueva imagen durante una operación de arrastre, debes usar la función de Windows ShowCursos para ocultar el cursor del mouse real después de llamar a SetDragCursorImage
. De lo contrario, el sistema puede parecer tener dos cursores del mouse mientras dure la operación de arrastre.
Cuando una aplicación llama a BeginDrag
, el sistema crea una lista de imágenes interna temporal y copia la imagen de arrastre especificada en la lista interna. Puedes recuperar un puntero a la lista de imágenes de arrastre temporal mediante la función miembro GetDragImage. La función también recupera la posición de arrastre actual y el desplazamiento de la imagen de arrastre en relación con la posición de arrastre.