Compartilhar via


Método IOleInPlaceObjectWindowless::GetDropTarget (ocidl.h)

Recupera a interface IDropTarget para um objeto ativo e sem janelas in-loco que dá suporte ao arrastar e soltar.

Sintaxe

HRESULT GetDropTarget(
  [out] IDropTarget **ppDropTarget
);

Parâmetros

[out] ppDropTarget

Um ponteiro para uma variável de ponteiro IDropTarget que recebe o ponteiro de interface para o objeto sem janelas.

Retornar valor

Esse método retorna S_OK em caso de êxito. Outros valores retornados possíveis incluem o seguinte.

Código de retorno Descrição
E_NOTIMPL
O objeto sem janelas não dá suporte ao arrastar e soltar.

Comentários

Um objeto em janela registra sua interface IDropTarget chamando a função RegisterDragDrop e fornecendo seu identificador de janela como um parâmetro. Registrar sua interface IDropTarget permite que o objeto participe de operações de arrastar e soltar. Como ele não tem uma janela quando ativo, um objeto sem janelas não pode registrar sua interface IDropTarget . Portanto, ele não pode participar diretamente de operações de arrastar e soltar sem suporte de seu contêiner.

Os seguintes eventos ocorrem durante uma operação de arrastar e soltar envolvendo objetos sem janelas:

  • O contêiner registra sua própria interface IDropTarget por meio da função RegisterDragDrop .
  • Na implementação do contêiner de seus próprios métodos IDropTarget::D ragEnter ou IDropTarget::D ragOver , o contêiner detecta se o ponteiro do mouse acabou de inserir um objeto inserido.
  • Se o objeto estiver inativo, o contêiner chamará o método IPointerInactive::GetActivationPolicy do objeto. O objeto retorna o sinalizador POINTERINACTIVE_ACTIVATEONDRAG. Em seguida, o contêiner ativa o objeto no local. Se o objeto já estava ativo, o contêiner não precisa executar essa etapa.
  • Depois que o objeto estiver ativo, o contêiner deverá obter a interface IDropTarget do objeto.
  • Um objeto sem janelas que deseja ser um destino de soltar ainda implementa a interface IDropTarget , mas não o registra e não o retorna por meio de chamadas para IUnknown::QueryInterface. Em vez disso, o contêiner pode obter essa interface chamando o método IOleInPlaceObjectWindowless::GetDropTarget do objeto. O objeto retornará um ponteiro para sua própria interface IDropTarget se quiser participar de operações de arrastar e soltar. O contêiner pode armazenar esse ponteiro de interface em cache para uso posterior. Por exemplo, em chamadas subsequentes para os métodos IDropTarget::D ragEnter ou IDropTarget::D ragLeave do contêiner, o contêiner pode usar o ponteiro armazenado em cache em vez de chamar o método GetDropTarget do objeto novamente.
  • Em seguida, o contêiner chama iDropTarget::D ragEnter do objeto e passa o valor retornado para pdwEffect de seus próprios métodos IDropTarget::D ragOver ou IDropTarget::D ragEnter . Desse ponto em diante, o contêiner encaminha todas as chamadas IDropTarget::D ragOver subsequentes para o objeto sem janelas até que o mouse deixe o objeto ou ocorra uma queda no objeto. Se o mouse sair do objeto, o contêiner chamará IDropTarget::D ragLeave do objeto e liberará a interface IDropTarget do objeto. Se a queda ocorrer, o contêiner encaminhará a chamada IDropTarget::D rop para o objeto .
  • Por fim, o contêiner in-loco desativa o objeto.
Um objeto pode retornar S_FALSE de seu próprio IDropTarget::D ragEnter para indicar que não aceita nenhum dos formatos de dados no objeto de dados. Nesse caso, o contêiner pode decidir aceitar os dados para si mesmo e retornar um dwEffect apropriado de seus próprios métodos IDropTarget::D ragEnter ou IDropTarget::D ragOver .

Um objeto que retorna S_FALSE de IDropTarget::D ragEnter deve estar preparado para receber chamadas subsequentes para IDropTarget::D ragEnter sem nenhum IDropTarget::D ragLeave entre eles. De fato, se o mouse ainda estiver sobre o mesmo objeto durante a próxima chamada para iDropTarget::D ragOver do contêiner, o contêiner poderá decidir tentar chamar IDropTarget::D ragEnter novamente no objeto .

Anotações aos Chamadores

Um contêiner pode armazenar em cache o ponteiro para a interface IDropTarget do objeto para uso posterior.

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 ocidl.h

Confira também

Idroptarget

IOleInPlaceObjectWindowless

IPointerInactive::GetActivationPolicy

RegisterDragDrop