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 |
---|---|
|
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 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 |