Classe COleDropTarget

Fornece o mecanismo de comunicação entre uma janela e as bibliotecas OLE.

Sintaxe

class COleDropTarget : public CCmdTarget

Membros

Construtores públicos

Nome Descrição
COleDropTarget::COleDropTarget Constrói um objeto COleDropTarget.

Métodos públicos

Nome Descrição
COleDropTarget::OnDragEnter Chamado quando o cursor entra primeiro na janela.
COleDropTarget::OnDragLeave Chamado quando o cursor é arrastado para fora da janela.
COleDropTarget::OnDragOver Chamado repetidamente quando o cursor é arrastado sobre a janela.
COleDropTarget::OnDragScroll Chamado para determinar se o cursor é arrastado para a área de rolagem da janela.
COleDropTarget::OnDrop Chamado quando os dados são soltos na janela, manipulador padrão.
COleDropTarget::OnDropEx Chamado quando os dados são soltos na janela, manipulador inicial.
COleDropTarget::Register Registra a janela como uma reprodução automática válida.
COleDropTarget::Revoke Faz com que a janela deixe de ser uma reprodução automática válida.

Comentários

Criar um objeto dessa classe permite que uma janela aceite os dados por meio do mecanismo de arrastar e soltar OLE.

Para obter uma janela para aceitar os comandos de soltar, será necessário primeiro criar um objeto da classe COleDropTarget e, em seguida, chamar a função de Registro com um ponteiro para o objeto CWnd desejado como o único parâmetro.

Para mais informações sobre as operações do tipo "arrastar e soltar" usando OLE, confira o artigo Arrastar e soltar OLE.

Hierarquia de herança

CObject

CCmdTarget

COleDropTarget

Requisitos

Cabeçalho: afxole.h

COleDropTarget::COleDropTarget

Constrói um objeto de classe COleDropTarget.

COleDropTarget();

Comentários

Chame o Registro para associar esse objeto a uma janela.

COleDropTarget::OnDragEnter

Chamado pela estrutura quando o cursor é arrastado pela primeira vez para a janela.

virtual DROPEFFECT OnDragEnter(
    CWnd* pWnd,
    COleDataObject* pDataObject,
    DWORD dwKeyState,
    CPoint point);

Parâmetros

pWnd
Aponta para a janela que o cursor está entrando.

pDataObject
Aponta para o objeto de dados contendo os dados que podem ser soltos.

dwKeyState
Contém o estado das teclas modificadoras. Essa é uma combinação de qualquer número dos seguintes: MK_CONTROL, MK_SHIFT, MK_ALT, MK_LBUTTON, MK_MBUTTON e MK_RBUTTON.

point
Contém a localização atual do cursor nas coordenadas de cliente.

Valor de retorno

O efeito resultante de uma tentativa de soltar no local especificado pelo ponto. Poderá ser um ou mais dos seguintes:

  • DROPEFFECT_NONE Não seria permitido soltar.

  • DROPEFFECT_COPY Uma operação de cópia seria executada.

  • DROPEFFECT_MOVE Uma operação de movimentação seria executada.

  • DROPEFFECT_LINK Uma vinculação dos dados soltos para os dados originais seria estabelecida.

  • DROPEFFECT_SCROLL Uma operação de rolar e arrastar está prestes a ocorrer ou está ocorrendo no destino.

Comentários

Substitua essa função para permitir que as operações de soltar ocorram na janela. A implementação padrão chama CView::OnDragEnter, que simplesmente retorna DROPEFFECT_NONE por padrão.

Para obter mais informações, consulte IDropTarget::DragEnter no SDK do Windows.

COleDropTarget::OnDragLeave

Chamado pela estrutura quando o cursor sai da janela enquanto uma operação de arrastar está em vigor.

virtual void OnDragLeave(CWnd* pWnd);

Parâmetros

pWnd
Aponta para a janela que o cursor está saindo.

Comentários

Substitua essa função se desejar um comportamento especial quando a operação de arrastar sair da janela especificada. A implementação padrão dessa função chama CView::OnDragLeave.

Para obter mais informações, consulte IDropTarget::DragLeave no SDK do Windows.

COleDropTarget::OnDragOver

Chamado pela estrutura quando o cursor é arrastado sobre a janela.

virtual DROPEFFECT OnDragOver(
    CWnd* pWnd,
    COleDataObject* pDataObject,
    DWORD dwKeyState,
    CPoint point);

Parâmetros

pWnd
Aponta para a janela sobre a qual o cursor está.

pDataObject
Aponta para o objeto de dados contendo os dados a serem soltos.

dwKeyState
Contém o estado das teclas modificadoras. Essa é uma combinação de qualquer número dos seguintes: MK_CONTROL, MK_SHIFT, MK_ALT, MK_LBUTTON, MK_MBUTTON e MK_RBUTTON.

point
Contém a localização atual do cursor nas coordenadas de cliente.

Valor de retorno

O efeito resultante de uma tentativa de soltar no local especificado pelo ponto. Poderá ser um ou mais dos seguintes:

  • DROPEFFECT_NONE Não seria permitido soltar.

  • DROPEFFECT_COPY Uma operação de cópia seria executada.

  • DROPEFFECT_MOVE Uma operação de movimentação seria executada.

  • DROPEFFECT_LINK Uma vinculação dos dados soltos para os dados originais seria estabelecida.

  • DROPEFFECT_SCROLL Indica que uma operação de rolar e arrastar está prestes a ocorrer ou está ocorrendo no destino.

Comentários

Essa função deverá ser substituída para permitir que as operações de soltar ocorram na janela. A implementação padrão dessa função chama CView::OnDragOver, que retorna DROPEFFECT_NONE por padrão. Como essa função é chamada com frequência durante uma operação de arrastar e soltar, ela deverá ser otimizada o máximo possível.

Para obter mais informações, consulte IDropTarget::DragOver no SDK do Windows.

Exemplo

DROPEFFECT COleContainerView::OnDragOver(COleDataObject* pDataObject,
   DWORD dwKeyState, CPoint point)
{
   UNREFERENCED_PARAMETER(pDataObject);
   UNREFERENCED_PARAMETER(point);

   DROPEFFECT de = DROPEFFECT_NONE;
   //Determine the type of operation
   if ((dwKeyState & MK_SHIFT) && (dwKeyState & MK_CONTROL))
      de = DROPEFFECT_LINK;
   else if (dwKeyState & MK_CONTROL)
      de = DROPEFFECT_COPY;
   else if (dwKeyState & MK_SHIFT)
      de = DROPEFFECT_MOVE;
   return de;
}

COleDropTarget::OnDragScroll

Chamado pela estrutura antes de chamar OnDragEnter ou OnDragOver para determinar se o ponto está na área de rolagem.

virtual DROPEFFECT OnDragScroll(
    CWnd* pWnd,
    DWORD dwKeyState,
    CPoint point);

Parâmetros

pWnd
Aponta para a janela sobre a qual o cursor está atualmente.

dwKeyState
Contém o estado das teclas modificadoras. Essa é uma combinação de qualquer número dos seguintes: MK_CONTROL, MK_SHIFT, MK_ALT, MK_LBUTTON, MK_MBUTTON e MK_RBUTTON.

point
Contém o local do cursor, em pixels, em relação à tela.

Valor de retorno

O efeito resultante de uma tentativa de soltar no local especificado pelo ponto. Poderá ser um ou mais dos seguintes:

  • DROPEFFECT_NONE Não seria permitido soltar.

  • DROPEFFECT_COPY Uma operação de cópia seria executada.

  • DROPEFFECT_MOVE Uma operação de movimentação seria executada.

  • DROPEFFECT_LINK Uma vinculação dos dados soltos para os dados originais seria estabelecida.

  • DROPEFFECT_SCROLL Indica que uma operação de rolar e arrastar está prestes a ocorrer ou está ocorrendo no destino.

Comentários

Substitua essa função quando quiser fornecer um comportamento especial para esse evento. A implementação padrão dessa função chama CView::OnDragScroll, que retorna DROPEFFECT_NONE e rola a janela quando o cursor é arrastado para a área de rolagem padrão dentro da borda da janela.

COleDropTarget::OnDrop

Chamado pela estrutura quando uma operação de soltar deverá ocorrer.

virtual BOOL OnDrop(
    CWnd* pWnd,
    COleDataObject* pDataObject,
    DROPEFFECT dropEffect,
    CPoint point);

Parâmetros

pWnd
Aponta para a janela sobre a qual o cursor está atualmente.

pDataObject
Aponta para o objeto de dados contendo os dados a serem soltos.

dropEffect
O efeito que o usuário escolheu para a operação de soltar. Poderá ser um ou mais dos seguintes:

  • DROPEFFECT_COPY Uma operação de cópia seria executada.

  • DROPEFFECT_MOVE Uma operação de movimentação seria executada.

  • DROPEFFECT_LINK Uma vinculação dos dados soltos para os dados originais seria estabelecida.

point
Contém o local do cursor, em pixels, em relação à tela.

Valor de retorno

Diferente de zero se a operação de soltar for bem-sucedida, caso contrário, retornará 0.

Comentários

A estrutura primeiro chamará OnDropEx. Se a função OnDropEx não manipular a operação de soltar, a estrutura chamará essa função membro OnDrop. Normalmente, o aplicativo substitui OnDropEx na classe de exibição para manipular a operação de arrastar e soltar com o botão direito do mouse. Normalmente, a classe de exibição OnDrop é usada para manipular a operação de arrastar e soltar simples.

A implementação padrão de COleDropTarget::OnDrop chama CView::OnDrop, que simplesmente retorna FALSE por padrão.

Para obter mais informações, consulte IDropTarget::Drop no SDK do Windows.

COleDropTarget::OnDropEx

Chamado pela estrutura quando uma operação de soltar deverá ocorrer.

virtual DROPEFFECT OnDropEx(
    CWnd* pWnd,
    COleDataObject* pDataObject,
    DROPEFFECT dropDefault,
    DROPEFFECT dropList,
    CPoint point);

Parâmetros

pWnd
Aponta para a janela sobre a qual o cursor está atualmente.

pDataObject
Aponta para o objeto de dados contendo os dados a serem soltos.

dropDefault
O efeito que o usuário escolheu para a operação de soltar padrão com base no estado da chave atual. Pode ser DROPEFFECT_NONE. Os efeitos da operação de soltar são abordados na seção Comentários.

dropList
Uma lista dos efeitos de soltar que a fonte da operação de soltar dá suporte. Os valores do efeito da operação de soltar podem ser combinados usando a operação OR (|) bit a bit. Os efeitos da operação de soltar são abordados na seção Comentários.

point
Contém o local do cursor, em pixels, em relação à tela.

Valor de retorno

O efeito da operação de soltar que resultou da tentativa de soltar no local especificado pelo ponto. Os efeitos da operação de soltar são abordados na seção Comentários.

Comentários

A estrutura primeiro chamará essa função. Se isso não manipular a operação de soltar, a estrutura chamará OnDrop. Normalmente, você substituirá OnDropEx na classe de exibição para dar suporte à operação de arrastar e soltar com o botão direito do mouse. Em geral, a classe de exibição OnDrop é usada para manipular o caso de suporte para a operação de arrastar e soltar simples.

A implementação padrão de COleDropTarget::OnDropEx chama CView::OnDropEx. Por padrão, CView::OnDropEx simplesmente retornará um valor fictício para indicar que a função membro OnDrop deverá ser chamada.

Os efeitos da ação de soltar descrevem a ação associada a uma operação desse tipo. Confira a seguinte lista de efeitos da operação de soltar:

  • DROPEFFECT_NONE Não seria permitido soltar.

  • DROPEFFECT_COPY Uma operação de cópia seria executada.

  • DROPEFFECT_MOVE Uma operação de movimentação seria executada.

  • DROPEFFECT_LINK Uma vinculação dos dados soltos para os dados originais seria estabelecida.

  • DROPEFFECT_SCROLL Indica que uma operação de rolar e arrastar está prestes a ocorrer ou está ocorrendo no destino.

Para obter mais informações, consulte IDropTarget::Drop no SDK do Windows.

COleDropTarget::Register

Chame essa função para registrar a janela com as DLLs OLE como uma reprodução automática válida.

BOOL Register(CWnd* pWnd);

Parâmetros

pWnd
Aponta para a janela que deverá ser registrada como uma reprodução automática.

Valor de retorno

Diferente de zero se o registro foi bem-sucedido, caso contrário, retornará 0.

Comentários

Será necessário chamar essa função para que as operações de soltar sejam aceitas.

Para obter mais informações, consulte RegisterDragDrop no SDK do Windows.

COleDropTarget::Revoke

Chame essa função antes de destruir qualquer janela registrada como uma reprodução automática por meio de uma chamada ao Registro para removê-la da lista de reproduções automáticas.

virtual void Revoke();

Comentários

Essa função é chamada automaticamente do manipulador OnDestroy da janela que foi registrada, portanto, geralmente não é necessário chamar essa função explicitamente.

Para obter mais informações, consulte RevokeDragDrop no SDK do Windows.

Confira também

HIERSVR de exemplo do MFC
OCLIENT de exemplo do MFC
Classe CCmdTarget
Gráfico da hierarquia
Classe COleDropSource