Funzione RegisterDragDrop (ole2.h)

Registra la finestra specificata come destinazione di un'operazione di trascinamento e rilascio OLE e specifica l'istanza IDropTarget da utilizzare 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 usa CoInitialize o CoInitializeEx anziché OleInitialize per inizializzare COM, RegisterDragDrop restituirà sempre un errore E_OUTOFMEMORY.
 

Commenti

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; vale a dire, quando la finestra viene visualizzata 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 hWndNULL, 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 parti non curate della finestra di destinazione durante un'operazione di trascinamento della selezione OLE, la funzione DoDragDrop chiama il metodo IDropTarget::D ragOver specificato per la finestra corrente. Quando si verifica effettivamente un'operazione di rilascio in una determinata finestra, la funzione DoDragDropDrop chiama IDropTarget::D rop.

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

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione ole2.h
Libreria Ole32.lib
DLL Ole32.dll

Vedi anche

RevokeDragDrop