Funzione RegisterDragDrop (ole2.h)

Registra la finestra specificata come destinazione di un'operazione di trascinamento della selezione OLE e specifica l'istanza di IDropTarget da usare per le operazioni di rilascio.

Sintassi

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

Parametri

[in] hwnd

Handle in una finestra che può essere una destinazione per un'operazione di trascinamento della selezione OLE.

[in] pDropTarget

Puntatore all'interfaccia IDropTarget sull'oggetto che deve essere la destinazione di un'operazione di trascinamento della selezione in una finestra specificata. Questa interfaccia viene usata per comunicare le informazioni di trascinamento della selezione OLE per tale finestra.

Valore restituito

Questa funzione restituisce S_OK in caso di esito positivo. Altri valori possibili includono quanto segue.

Codice restituito Descrizione
DRAGDROP_E_INVALIDHWND
Handle non valido restituito nel parametro hwnd.
DRAGDROP_E_ALREADYREGISTERED
La finestra specificata è già stata registrata come destinazione di rilascio.
E_OUTOFMEMORY
Memoria insufficiente per l'operazione.
 
Nota Se si utilizza CoInitialize o CoInitializeEx anziché OleInitialize per inizializzare COM, RegisterDragDrop restituirà sempre un errore di E_OUTOFMEMORY.
 

Osservazioni

Se l'applicazione può accettare oggetti eliminati durante le operazioni di trascinamento della selezione OLE, è necessario chiamare la funzione RegisterDragDrop. Eseguire questa operazione ogni volta che una delle finestre dell'applicazione è disponibile come destinazione potenziale di rilascio; ovvero, quando la finestra viene visualizzata senza stub sullo schermo.

Il thread dell'applicazione che chiama la funzione RegisterDragDrop deve eseguire il pumping dei messaggi, presumibilmente chiamando la funzione GetMessage con un parametro NULLhWnd, perché OLE crea finestre sul thread che richiedono messaggi elaborati. Se questo requisito non viene soddisfatto, qualsiasi applicazione che trascina un oggetto sulla finestra registrata come destinazione di rilascio si blocca fino alla chiusura dell'applicazione di destinazione.

La funzione RegisterDragDrop registra solo una finestra alla volta, quindi è necessario chiamarla per ogni finestra dell'applicazione in grado di accettare oggetti eliminati.

Quando il mouse passa su parti non curate della finestra di destinazione durante un'operazione di trascinamento della selezione OLE, la funzione DoDragDrop chiama il metodo IDropTarget::D rag Over specificato per la finestra corrente. Quando un'operazione di rilascio si verifica effettivamente in una determinata finestra, la funzione DoDragDrop chiama IDropTarget::D rop.

La funzione RegisterDragDrop chiama anche il metodo IUnknown::AddRef sul puntatore IDropTarget .

Fabbisogno

Requisito Valore
client minimo supportato Windows 2000 Professional [solo app desktop]
server minimo supportato Windows 2000 Server [solo app desktop]
piattaforma di destinazione Finestre
intestazione ole2.h
libreria Ole32.lib
dll Ole32.dll

Vedere anche

RevokeDragDrop