Compartir a través de


COleDropTarget (clase)

Proporciona el mecanismo de comunicación entre una ventana y las bibliotecas OLE.

Sintaxis

class COleDropTarget : public CCmdTarget

Miembros

Constructores públicos

Nombre Descripción
COleDropTarget::COleDropTarget Construye un objeto COleDropTarget.

Métodos públicos

Nombre Descripción
COleDropTarget::OnDragEnter Se llama cuando el cursor entra por primera vez en la ventana.
COleDropTarget::OnDragLeave Se llama cuando el cursor se arrastra fuera de la ventana.
COleDropTarget::OnDragOver Se llama repetidamente cuando el cursor se arrastra sobre la ventana.
COleDropTarget::OnDragScroll Se llama para determinar si el cursor se arrastra a la región de desplazamiento de la ventana.
COleDropTarget::OnDrop Se llama cuando se quitan los datos en la ventana, controlador predeterminado.
COleDropTarget::OnDropEx Se llama cuando se quitan los datos en la ventana, controlador inicial.
COleDropTarget::Register Registra la ventana como destino de colocación válido.
COleDropTarget::Revoke Hace que la ventana deje de ser un destino de colocación válido.

Comentarios

La creación de un objeto de esta clase permite que una ventana acepte datos a través del mecanismo de arrastrar y colocar OLE.

Para obtener una ventana para aceptar comandos drop, primero debe crear un objeto de la clase COleDropTarget y, a continuación, llamar a la función Register con un puntero al objeto CWnd deseado como el único parámetro.

Para obtener más información sobre las operaciones de arrastrar y colocar mediante OLE, consulte el artículo Arrastrar y colocar OLE.

Jerarquía de herencia

CObject

CCmdTarget

COleDropTarget

Requisitos

Encabezado: afxole.h

COleDropTarget::COleDropTarget

Construye un objeto de clase COleDropTarget.

COleDropTarget();

Comentarios

Llame a Register para asociar este objeto a una ventana.

COleDropTarget::OnDragEnter

Lo llama el marco cuando el cursor se arrastra por primera vez a la ventana.

virtual DROPEFFECT OnDragEnter(
    CWnd* pWnd,
    COleDataObject* pDataObject,
    DWORD dwKeyState,
    CPoint point);

Parámetros

pWnd
Apunta a la ventana en la que está escribiendo el cursor.

pDataObject
Apunta al objeto de datos que contiene los datos que se pueden quitar.

dwKeyState
Contiene el estado de las claves modificadoras. Se trata de una combinación de cualquier número de los siguientes: MK_CONTROL, MK_SHIFT, MK_ALT, MK_LBUTTON, MK_MBUTTON y MK_RBUTTON.

point
Contiene la ubicación actual del cursor en coordenadas de cliente.

Valor devuelto

Efecto que se produciría si se intentara una colocación en la ubicación especificada por punto. Puede ser uno o varios de los siguientes:

  • DROPEFFECT_NONE No se permitiría una colocación.

  • DROPEFFECT_COPY Se podría realizar una operación de copia.

  • DROPEFFECT_MOVE Se realizaría una operación de movimiento.

  • DROPEFFECT_LINK Se podría establecer un vínculo de los datos colocados a los datos originales.

  • DROPEFFECT_SCROLL Indica que una operación de desplazamiento de arrastre está a punto de producirse o que se está produciendo en el destino.

Comentarios

Invalide esta función para permitir que las operaciones de eliminación se produzcan en la ventana. La implementación predeterminada llama a CView::OnDragEnter, que simplemente devuelve DROPEFFECT_NONE de forma predeterminada.

Para obtener más información, vea IDropTarget::D ragEnter en Windows SDK.

COleDropTarget::OnDragLeave

Lo llama el marco cuando el cursor sale de la ventana mientras una operación de arrastre está en vigor.

virtual void OnDragLeave(CWnd* pWnd);

Parámetros

pWnd
Apunta a la ventana que deja el cursor.

Comentarios

Invalide esta función si desea un comportamiento especial cuando la operación de arrastre sale de la ventana especificada. La implementación predeterminada de esta función llama a CView::OnDragLeave.

Para obtener más información, vea IDropTarget::DragLeave en Windows SDK.

COleDropTarget::OnDragOver

Lo llama el marco cuando el cursor se arrastra sobre la ventana.

virtual DROPEFFECT OnDragOver(
    CWnd* pWnd,
    COleDataObject* pDataObject,
    DWORD dwKeyState,
    CPoint point);

Parámetros

pWnd
Apunta a la ventana en la que se ha terminado el cursor.

pDataObject
Apunta al objeto de datos que contiene los datos que se van a quitar.

dwKeyState
Contiene el estado de las claves modificadoras. Se trata de una combinación de cualquier número de los siguientes: MK_CONTROL, MK_SHIFT, MK_ALT, MK_LBUTTON, MK_MBUTTON y MK_RBUTTON.

point
Contiene la ubicación actual del cursor en coordenadas de cliente.

Valor devuelto

Efecto que se produciría si se intentara una colocación en la ubicación especificada por punto. Puede ser uno o varios de los siguientes:

  • DROPEFFECT_NONE No se permitiría una colocación.

  • DROPEFFECT_COPY Se podría realizar una operación de copia.

  • DROPEFFECT_MOVE Se realizaría una operación de movimiento.

  • DROPEFFECT_LINK Se podría establecer un vínculo de los datos colocados a los datos originales.

  • DROPEFFECT_SCROLL Indica que una operación de desplazamiento de arrastre está a punto de producirse o que se está produciendo en la vista de destino.

Comentarios

Esta función se debe invalidar para permitir que las operaciones de colocación se produzcan en la ventana. La implementación predeterminada de esta función llama a CView::OnDragOver, que devuelve DROPEFFECT_NONE de forma predeterminada. Dado que se llama a esta función con frecuencia durante una operación de arrastrar y colocar, debe optimizarse tanto como sea posible.

Para obtener más información, vea IDropTarget::DragOver en Windows SDK.

Ejemplo

DROPEFFECT COleContainerView::OnDragOver(COleDataObject* pDataObject,
   DWORD dwKeyState, CPoint point)
{
   UNREFERENCED_PARAMETER(pDataObject);
   UNREFERENCED_PARAMETER(point);

   DROPEFFECT de = DROPEFFECT_NONE;
   //Determine the type of operation
   if ((dwKeyState & MK_SHIFT) && (dwKeyState & MK_CONTROL))
      de = DROPEFFECT_LINK;
   else if (dwKeyState & MK_CONTROL)
      de = DROPEFFECT_COPY;
   else if (dwKeyState & MK_SHIFT)
      de = DROPEFFECT_MOVE;
   return de;
}

COleDropTarget::OnDragScroll

Lo llama el marco antes de llamar a OnDragEnter o OnDragOver para determinar si el punto está en la región de desplazamiento.

virtual DROPEFFECT OnDragScroll(
    CWnd* pWnd,
    DWORD dwKeyState,
    CPoint point);

Parámetros

pWnd
Apunta a la ventana en la que se ha terminado el cursor.

dwKeyState
Contiene el estado de las claves modificadoras. Se trata de una combinación de cualquier número de los siguientes: MK_CONTROL, MK_SHIFT, MK_ALT, MK_LBUTTON, MK_MBUTTON y MK_RBUTTON.

point
Contiene la ubicación del cursor, en píxeles, con respecto a la pantalla.

Valor devuelto

Efecto que se produciría si se intentara una colocación en la ubicación especificada por punto. Puede ser uno o varios de los siguientes:

  • DROPEFFECT_NONE No se permitiría una colocación.

  • DROPEFFECT_COPY Se podría realizar una operación de copia.

  • DROPEFFECT_MOVE Se realizaría una operación de movimiento.

  • DROPEFFECT_LINK Se podría establecer un vínculo de los datos colocados a los datos originales.

  • DROPEFFECT_SCROLL Indica que una operación de desplazamiento de arrastre está a punto de producirse o que se está produciendo en la vista de destino.

Comentarios

Invalide esta función cuando quiera proporcionar un comportamiento especial para este evento. La implementación predeterminada de esta función llama a CView::OnDragScroll, que devuelve DROPEFFECT_NONE y desplaza la ventana cuando el cursor se arrastra a la región de desplazamiento predeterminada dentro del borde de la ventana.

COleDropTarget::OnDrop

Lo llama el marco cuando se va a producir una operación de eliminación.

virtual BOOL OnDrop(
    CWnd* pWnd,
    COleDataObject* pDataObject,
    DROPEFFECT dropEffect,
    CPoint point);

Parámetros

pWnd
Apunta a la ventana en la que se ha terminado el cursor.

pDataObject
Apunta al objeto de datos que contiene los datos que se van a quitar.

dropEffect
Efecto que el usuario eligió para la operación de colocación. Puede ser uno o varios de los siguientes:

  • DROPEFFECT_COPY Se podría realizar una operación de copia.

  • DROPEFFECT_MOVE Se realizaría una operación de movimiento.

  • DROPEFFECT_LINK Se podría establecer un vínculo de los datos colocados a los datos originales.

point
Contiene la ubicación del cursor, en píxeles, con respecto a la pantalla.

Valor devuelto

Distinto de cero si la colocación se realiza correctamente; de lo contrario, 0.

Comentarios

El marco llama primero a OnDropEx. Si la función OnDropEx no controla la colocación, el marco llama a esta función miembro, OnDrop. Normalmente, la aplicación invalida OnDropEx en la clase de vista para controlar el arrastrar y colocar el botón derecho del mouse. Normalmente, la clase de vista OnDrop se usa para controlar el arrastre y la colocación sencillos.

La implementación predeterminada de COleDropTarget::OnDrop llama a CView::OnDrop, que simplemente devuelve FALSE de forma predeterminada.

Para obtener más información, vea IDropTarget::Drop en Windows SDK.

COleDropTarget::OnDropEx

Lo llama el marco cuando se va a producir una operación de eliminación.

virtual DROPEFFECT OnDropEx(
    CWnd* pWnd,
    COleDataObject* pDataObject,
    DROPEFFECT dropDefault,
    DROPEFFECT dropList,
    CPoint point);

Parámetros

pWnd
Apunta a la ventana en la que se ha terminado el cursor.

pDataObject
Apunta al objeto de datos que contiene los datos que se van a quitar.

dropDefault
Efecto que el usuario eligió para la operación de colocación predeterminada en función del estado de clave actual. Puede ser DROPEFFECT_NONE. Los efectos de colocación se describen en la sección Comentarios.

dropList
Lista de los efectos de colocación que admite el origen de colocación. Los valores de efecto de colocación pueden combinarse mediante la operación bit a bit OR (|). Los efectos de colocación se describen en la sección Comentarios.

point
Contiene la ubicación del cursor, en píxeles, con respecto a la pantalla.

Valor devuelto

Efecto de colocación resultante del intento de colocación en la ubicación especificada por point. Los efectos de colocación se describen en la sección Comentarios.

Comentarios

El marco llama primero a esta función. Si no controla la colocación, el marco llama a OnDrop. Normalmente, invalidará OnDropEx en la clase de vista para admitir el arrastrar y colocar el botón derecho del mouse. Normalmente, la clase de vista OnDrop se usa para controlar el caso de compatibilidad con arrastrar y colocar sencillos.

La implementación predeterminada de COleDropTarget::OnDropEx llama a CView::OnDropEx. De forma predeterminada, CView::OnDropEx simplemente devuelve un valor ficticio para indicar que se debe llamar a la función miembro OnDrop .

Los efectos de colocación describen la acción asociada a una operación de colocación. Consulte la siguiente lista de efectos de colocación:

  • DROPEFFECT_NONE No se permitiría una colocación.

  • DROPEFFECT_COPY Se podría realizar una operación de copia.

  • DROPEFFECT_MOVE Se realizaría una operación de movimiento.

  • DROPEFFECT_LINK Se podría establecer un vínculo de los datos colocados a los datos originales.

  • DROPEFFECT_SCROLL Indica que una operación de desplazamiento de arrastre está a punto de producirse o que se está produciendo en la vista de destino.

Para obtener más información, vea IDropTarget::Drop en Windows SDK.

COleDropTarget::Register

Llame a esta función para registrar la ventana con los archivos DLL OLE como destino de colocación válido.

BOOL Register(CWnd* pWnd);

Parámetros

pWnd
Apunta a la ventana que se va a registrar como destino de colocación.

Valor devuelto

Distinto de cero si el registro se realiza correctamente; de lo contrario, 0.

Comentarios

Se debe llamar a esta función para que se acepten las operaciones de eliminación.

Para más información, consulte RegisterDragDrop en Windows SDK.

COleDropTarget::Revoke

Llame a esta función antes de destruir cualquier ventana que se haya registrado como destino de colocación a través de una llamada a Register para quitarla de la lista de destinos de colocación.

virtual void Revoke();

Comentarios

Esta función se llama automáticamente desde el controlador OnDestroy para la ventana registrada, por lo que normalmente no es necesario llamar a esta función explícitamente.

Para obtener más información, vea RevokeDragDrop en Windows SDK.

Consulte también

HIERSVR de muestra MFC
Ejemplo MFC de OCLIENT
CCmdTarget (clase)
Gráfico de jerarquías
COleDropSource (clase)