Partilhar via


Como criar manipuladores de arrastar e soltar

Por padrão, os arquivos não são destinos de descarte. Você pode transformar os membros de um tipo de arquivo em alvos de descarte implementando e registando um manipulador de descarte .

Se um manipulador de arrastar e soltar estiver registado para um tipo de ficheiro, ele será chamado sempre que um objeto for arrastado ou solto em um membro do tipo de ficheiro. O Shell gerencia a operação chamando os métodos apropriados na interfaceIDropTarget do manipulador.

Os procedimentos gerais para implementar e registrar um manipulador de extensão Shell são discutidos em Criando manipuladores de extensão Shell. Este documento se concentra nos aspetos da implementação que são específicos para manipuladores de drop.

Instruções

Etapa 1: Implementando manipuladores de arrastar e soltar

Como todos os manipuladores de extensão do Shell, os manipuladores de arrasto e soltar são objetos COM (Component Object Model) em execução interna implementados como DLLs. Eles exportam duas interfaces além IUnknown: IPersistFile e IDropTarget.

O Shell inicializa o manipulador por meio de sua interface IPersistFile. Ele usa essa interface para solicitar o identificador de classe do manipulador (CLSID) e fornece o nome do arquivo. Para obter uma discussão geral sobre como implementar manipuladores de extensão do Shell, incluindo a interface IPersistFile, consulte Criando manipuladores de extensão do Shell.

Depois de o gestor de descarte ser inicializado, o Shell invoca o método apropriado na interface IDropTarget do gestor.

Etapa 2: Registar manipuladores de arrastar e soltar

Os manipuladores de drops são registrados na subchave desse tipo de arquivo.

HKEY_CLASSES_ROOT
   ProgID
      shellex
         DropHandler

Crie uma subchave de DropHandler nomeada para o manipulador e defina o valor padrão da subchave como a forma de cadeia de caracteres do GUID CLSID do manipulador. Para obter uma discussão geral sobre como registrar manipuladores de extensão do Shell, consulte Criando manipuladores de extensão do Shell.

O exemplo a seguir ilustra entradas do Registro que habilitam um manipulador de drops para um tipo de arquivo .myp de exemplo.

HKEY_CLASSES_ROOT
   .myp
      (Default) = MyProgram.1
   CLSID
      {00000000-1111-2222-3333-444444444444}
         InProcServer32
            (Default) = C:\MyDir\MyCommand.dll
            ThreadingModel = Apartment
   MyProgram.1
      (Default) = MyProgram Application
      shellex
         DropHandler
            (Default) = {00000000-1111-2222-3333-444444444444}

Criando manipuladores de extensão de shell

IDropTarget

IPersistFile