Compartir a través de


Método IDropTarget::D ragOver (oleidl.h)

Proporciona comentarios de destino al usuario y comunica el efecto de la caída a la función DoDragDrop para que pueda comunicar el efecto de la devolución al origen.

Sintaxis

HRESULT DragOver(
  [in]      DWORD  grfKeyState,
  [in]      POINTL pt,
  [in, out] DWORD  *pdwEffect
);

Parámetros

[in] grfKeyState

Estado actual de las teclas modificadoras de teclado en el teclado. Los valores válidos pueden ser una combinación de cualquiera de las marcas MK_CONTROL, MK_SHIFT, MK_ALT, MK_BUTTON, MK_LBUTTON, MK_MBUTTON y MK_RBUTTON.

[in] pt

Estructura POINTL que contiene las coordenadas del cursor actuales en coordenadas de pantalla.

[in, out] pdwEffect

En la entrada, puntero al valor del parámetro pdwEffect de la función DoDragDrop . Al devolver, debe contener una de las marcas DROPEFFECT , que indica cuál sería el resultado de la operación de colocación.

Valor devuelto

Este método devuelve S_OK cuando funciona correctamente. Otros valores posibles incluyen lo siguiente.

Código devuelto Descripción
E_UNEXPECTED
Se produjo un error inesperado.
E_INVALIDARG
El valor pdwEffect no es válido.
E_OUTOFMEMORY
No había memoria suficiente disponible para esta operación.

Comentarios

No llamas a DragOver directamente. La función DoDragDrop llama a este método cada vez que el usuario mueve el mouse a través de una ventana de destino determinada. DoDragDrop sale del bucle si se cancela la operación de arrastrar y colocar, si el usuario arrastra el mouse fuera de la ventana de destino o si se completa la colocación.

Para implementar IDropTarget::D ragOver, debe proporcionar características similares a las de IDropTarget::D ragEnter. Debe determinar el efecto de quitar los datos en el destino examinando el FORMATETC que define los formatos y medios del objeto de datos, junto con el estado de las claves modificadoras. La posición del mouse también puede desempeñar un papel para determinar el efecto de una caída. Las siguientes claves modificadoras afectan al resultado de la colocación.

Combinación de teclas comentarios de User-Visible Efecto Drop
CTRL + MAYÚS = DROPEFFECT_LINK
CTRL + DROPEFFECT_COPY
Sin teclas ni MAYÚS None DROPEFFECT_MOVE
 

Se comunica el efecto de la devolución al origen a través de DoDragDrop en pdwEffect. A continuación, la función DoDragDrop llama a IDropSource::GiveFeedback para que la aplicación de origen pueda mostrar los comentarios visuales adecuados al usuario.

Al entrar a IDropTarget::D ragOver, el parámetro pdwEffect debe establecerse en los efectos permitidos pasados al parámetro pdwOkEffect de la función DoDragDrop . El método IDropTarget::D ragOver debe poder elegir uno de estos efectos o deshabilitar la eliminación.

Tras la devolución, pdwEffect se establece en una de las marcas DROPEFFECT. A continuación, este valor se pasa al parámetro pdwEffect de DoDragDrop. Los valores razonables son DROPEFFECT_COPY copiar los datos arrastrados en el destino, DROPEFFECT_LINK crear un vínculo a los datos de origen o DROPEFFECT_MOVE para permitir que los datos arrastrados se muevan permanentemente de la aplicación de origen al destino.

También puede proporcionar comentarios visuales adecuados en la ventana de destino. Es posible que ya se muestren algunos comentarios de destino de una llamada anterior a IDropTarget::D ragOver o desde el IDropTarget::D ragEnter inicial. Si estos comentarios ya no son adecuados, debe quitarlo.

Por motivos de eficiencia, un objeto de datos no se pasa en IDropTarget::D ragOver. El objeto de datos pasado en la llamada más reciente a IDropTarget::D ragEnter está disponible y se puede usar.

Cuando IDropTarget::D ragOver ha completado su operación, la función DoDragDrop llama a IDropSource::GiveFeedback para que la aplicación de origen pueda mostrar los comentarios visuales adecuados al usuario.

Notas para los implementadores

Esta función se llama con frecuencia durante el bucle DoDragDrop , por lo que tiene sentido optimizar la implementación del método DragOver tanto como sea posible.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado oleidl.h

Consulte también

DoDragDrop

IDropSource

IDropSourceNotify

IDropTarget

RegisterDragDrop

RevokeDragDrop