Função DoDragDrop (ole2.h)
Executa uma operação de arrastar e soltar OLE.
Sintaxe
HRESULT DoDragDrop(
[in] LPDATAOBJECT pDataObj,
[in] LPDROPSOURCE pDropSource,
[in] DWORD dwOKEffects,
[out] LPDWORD pdwEffect
);
Parâmetros
[in] pDataObj
Ponteiro para a interface IDataObject em um objeto de dados que contém os dados que estão sendo arrastados.
[in] pDropSource
Ponteiro para uma implementação da interface IDropSource , que é usada para se comunicar com a origem durante a operação de arrastar.
[in] dwOKEffects
Afeta a origem permitida na operação de arrastar e soltar OLE. O mais significativo é se permite uma mudança. Os parâmetros dwOKEffect e pdwEffect obtêm valores da enumeração DROPEFFECT . Para obter uma lista de valores, consulte DROPEFFECT.
[out] pdwEffect
Ponteiro para um valor que indica como a operação de arrastar e soltar OLE afetou os dados de origem. O parâmetro pdwEffect será definido somente se a operação não for cancelada.
Retornar valor
Essa função retorna S_OK em caso de êxito. Outros valores possíveis incluem o seguinte.
Código de retorno | Descrição |
---|---|
|
A operação de arrastar e soltar OLE foi bem-sucedida. |
|
A operação de arrastar e soltar OLE foi cancelada. |
|
Ocorreu um erro inesperado. |
Comentários
Se você estiver desenvolvendo um aplicativo que pode atuar como uma fonte de dados para uma operação de arrastar e soltar OLE, chame DoDragDrop quando detectar que o usuário iniciou uma operação de arrastar e soltar OLE.
A função DoDragDrop insere um loop no qual chama vários métodos nas interfaces IDropSource e IDropTarget . (Para uma operação de arrastar e soltar bem-sucedida, o aplicativo que atua como fonte de dados também deve implementar o IDropSource, enquanto o aplicativo de destino deve implementar IDropTarget.)
- A função DoDragDrop determina a janela sob o local atual do cursor. Em seguida, ele verifica se essa janela é um destino de soltar válido.
- Se a janela for um destino de soltar válido, o DoDragDropchamará IDropTarget::D ragEnter. Esse método fornece um código de efeito que indica o que aconteceria se a queda realmente ocorresse. Para obter uma lista de efeitos de soltar válidos, consulte a enumeração DROPEFFECT .
- DoDragDrop chama IDropSource::GiveFeedback com o código de efeito para que a interface de origem de soltar possa fornecer comentários visuais apropriados para o usuário. O ponteiro pDropSource passado para DoDragDrop especifica a interface IDropSource apropriada.
-
O DoDragDrop rastreia os movimentos e as alterações do cursor do mouse no estado do teclado ou do botão do mouse.
- Se o usuário sair de uma janela, o DoDragDropchamará IDropTarget::D ragLeave.
- Se o mouse entrar em outra janela, DoDragDrop determinará se essa janela é um destino de soltar válido e, em seguida, chamará IDropTarget::D ragEnter para essa janela.
- Se o mouse se mover, mas permanecer dentro da mesma janela, o DoDragDropchamará IDropTarget::D ragOver.
-
Se houver uma alteração no estado do botão do teclado ou do mouse, o DoDragDropchamará IDropSource::QueryContinueDrag e determinará se deseja continuar o arrastar, remover os dados ou cancelar a operação com base no valor retornado.
- Se o valor retornado for S_OK, o DoDragDrop primeiro chamará IDropTarget::D ragOver para continuar a operação. Esse método retorna um novo valor de efeito e DoDragDrop , em seguida, chama IDropSource::GiveFeedback com o novo efeito para que os comentários visuais apropriados possam ser definidos. Para obter uma lista de efeitos de soltar válidos, consulte a enumeração DROPEFFECT . IDropTarget::D ragOver e IDropSource::GiveFeedback são emparelhados para que, à medida que o mouse se move pelo destino de soltar, o usuário recebe os comentários mais atualizados sobre a posição do mouse.
- Se o valor retornado for DRAGDROP_S_DROP, DoDragDropchamará IDropTarget::D rop. A função DoDragDrop retorna o último código de efeito para a origem, para que o aplicativo de origem possa executar a operação apropriada nos dados de origem, por exemplo, recortar os dados se a operação for uma movimentação.
- Se o valor retornado for DRAGDROP_S_CANCEL, a função DoDragDropchamará IDropTarget::D ragLeave.
Para dar suporte à entrada por toque ou caneta, não chame DoDragDrop do manipulador de toque. Em vez disso, chame DoDragDrop do manipulador para as mensagens do mouse que o sistema sintetiza após a entrada por toque.
O aplicativo pode identificar mensagens sintetizadas chamando a função GetMessageExtraInfo . Para obter mais informações sobre como usar GetMessageExtraInfo para distinguir entre a entrada do mouse e a entrada do Windows Touch, consulte Solução de problemas de aplicativos.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | ole2.h |
Biblioteca | Ole32.lib |
DLL | Ole32.dll |