Compartilhar via


Handling Drag-and-Drop Messages

Windows Mobile Not SupportedWindows Embedded CE Supported

9/9/2008

Uma árvore-controle exibição notifica o janela pai quando um usuário começa a arrastar um item usando um mouse ou caneta. O janela pai recebe uma mensagem TVN_BEGINDRAG quando um usuário começa arrastar um item usando o botão esquerdo do mouse e uma mensagem TVN_BEGINRDRAG quando um usuário começa arrastar usando o direito botão. Você pode evitar um controle exibição - exibição controle enviar essas mensagens, fornecendo a árvore - árvore o estilo TVS_DISABLEDRAGDROP.

Você pode obter uma imagem para exibir durante um operação de arrastar usando a mensagem TVM_CREATEDRAGIMAGE. A árvore-controle de exibição cria um bitmap arrastar que baseia-se no rotular do item que está sendo arrastado. Em seguida, a árvore-exibição controle cria uma lista de imagens, adiciona o bitmap para ele e retorna o identificador para o lista de imagens.

Você deve fornecer a codificar que, na verdade, você pode arrastar o item. Normalmente, essa tarefa envolve usando os recursos arrastar das funções que manipulam listas imagem e incluindo codificar para processamento de mensagens WM_MOUSEMOVE e WM_LBUTTONUP que são enviadas para o janela pai após o operação de arrastar começa.

Para usar um item em uma árvore-controle de exibição como o destino de uma drag-and-drop operation, use o SendMessage função para enviar uma mensagem TVM_HITTEST determinar quando o mouse ou caneta é em um destino item. Para fazer isso, especificar o endereço de um TVHITTESTINFO estrutura que contém o atual coordenadas do mouse ou caneta. Quando SendMessage Retorna, a estrutura contém um sinalizador que indica a localidade do mouse ou caneta relativo para a árvore-controle de exibição. Se o mouse ou caneta está sobre um item na árvore de-controle de exibição, a estrutura contém o identificador para o item, muito.

Você pode indicar que um item é o destino de uma drag-and-drop operation usando a mensagem TVM_SETITEM para definir o estado para TVIS_DROPHILITED. Um item que tenha esse estado é desenhado no estilo que é usado para indicar um destino para um drag-and-drop operation.

O seguinte mostra exemplo de código como identificador arrastar - e - mensagens ato de soltar.

case WM_NOTIFY:
{
  LPNMHDR  pnmh = (LPNMHDR) lParam;
  
  switch (pnmh->code)
  {
    case TVN_BEGINDRAG:
      {  
         // Notifies the tree-view control's parent window that a 
         // drag-and-drop operation is being initiated.

         return 0;
      }
         
      case TVN_BEGINLABELEDIT:
      {  
         // Notifies the tree-view control's parent window about the 
         // start of label editing for an item.

         return 0;
      }
         
    case TVN_ITEMEXPANDED:
    {
      // Notifies a tree-view control's parent window that a parent
      // item's list of child items has expanded or collapsed. This 
      // message is sent in the form of a WM_NOTIFY 
      // message.

      return 0;
    }
      
    case TVN_ITEMEXPANDING:
    {
      // Notifies a tree-view control's parent window that a parent
      // item's list of child items is about to expand or collapse.

      return 0;  
    }

    default:
      return 0;    
  }
  break;
}

See Also

Concepts

Creating a Tree View
Working with Common Controls