Función RegisterDragDrop (ole2.h)

Registra la ventana especificada como una que puede ser el destino de una operación de arrastrar y colocar OLE y especifica la instancia de IDropTarget que se va a usar para las operaciones de colocación.

Sintaxis

HRESULT RegisterDragDrop(
  [in] HWND         hwnd,
  [in] LPDROPTARGET pDropTarget
);

Parámetros

[in] hwnd

Identificador de una ventana que puede ser un destino para una operación de arrastrar y colocar OLE.

[in] pDropTarget

Puntero a la interfaz IDropTarget en el objeto que va a ser el destino de una operación de arrastrar y colocar en una ventana especificada. Esta interfaz se usa para comunicar información de arrastrar y colocar OLE para esa ventana.

Valor devuelto

Esta función devuelve S_OK si se ejecuta correctamente. Otros valores posibles incluyen lo siguiente.

Código devuelto Descripción
DRAGDROP_E_INVALIDHWND
Identificador no válido devuelto en el parámetro hwnd.
DRAGDROP_E_ALREADYREGISTERED
La ventana especificada ya se ha registrado como destino de colocación.
E_OUTOFMEMORY
Memoria insuficiente para la operación.
 
Nota Si usa CoInitialize o CoInitializeEx en lugar de OleInitialize para inicializar COM, RegisterDragDrop siempre devolverá un error de E_OUTOFMEMORY.
 

Comentarios

Si la aplicación puede aceptar objetos descartados durante las operaciones de arrastrar y colocar OLE, debe llamar a la función RegisterDragDrop . Haga esto cada vez que una de las ventanas de la aplicación esté disponible como posible destino de eliminación; es decir, cuando la ventana aparece sin proteger en la pantalla.

El subproceso de aplicación que llama a la función RegisterDragDrop debe bombear mensajes, presumiblemente llamando a la función GetMessage con un parámetro hWndNULL, porque OLE crea ventanas en el subproceso que necesitan mensajes procesados. Si no se cumple este requisito, cualquier aplicación que arrastre un objeto sobre la ventana registrada como destino de colocación se bloqueará hasta que se cierre la aplicación de destino.

La función RegisterDragDrop solo registra una ventana a la vez, por lo que debe llamarla para cada ventana de aplicación capaz de aceptar objetos descartados.

A medida que el mouse pasa por partes no protegidas de la ventana de destino durante una operación de arrastrar y colocar OLE, la función DoDragDrop llama al método IDropTarget::D ragOver especificado para la ventana actual. Cuando una operación de colocación se produce realmente en una ventana determinada, la función DoDragDrop llama a IDropTarget::D rop.

La función RegisterDragDrop también llama al método IUnknown::AddRef en el puntero IDropTarget .

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 ole2.h
Library Ole32.lib
Archivo DLL Ole32.dll

Consulte también

RevokeDragDrop