Поделиться через


Как создавать обработчики перетаскивания

По умолчанию файлы не являются целевыми объектами удаления. Чтобы сделать элементы типа файла целевыми объектами перетаскивания, реализуйте и зарегистрируйте обработчик .

Если обработчик перетаскивания зарегистрирован для типа файла, он вызывается всякий раз, когда объект перетаскивается или сбрасывается на элемент типа файла. Оболочка управляет операцией, вызывая соответствующие методы в интерфейсе IDropTarget обработчика.

Общие процедуры реализации и регистрации обработчиков расширений оболочки рассматриваются в Создание обработчиков расширений оболочки. В этом документе рассматриваются те аспекты реализации, которые относятся к обработчикам удаления.

Инструкции

Шаг 1. Реализация обработчиков удаления

Как и все обработчики расширений оболочки, обработчики перетаскивания являются объектами компонентной объектной модели (COM), реализованными как библиотеки DLL. Они экспортируют два интерфейса в дополнение к IUnknown: IPersistFile и IDropTarget.

оболочка инициализирует обработчик через интерфейс IPersistFile . Он использует этот интерфейс для запроса идентификатора класса обработчика (CLSID) и предоставляет его имя файла. Общие сведения о том, как реализовать обработчики расширений оболочки, включая интерфейс IPersistFile, см. в разделе Создание обработчиков расширений оболочки.

После инициализации обработчика перетаскивания оболочка (Shell) вызывает соответствующий метод в интерфейсе IDropTargetобработчика.

Шаг 2. Регистрация обработчиков сброса

Обработчики переноса регистрируются в подразделе данного типа файла.

HKEY_CLASSES_ROOT
   ProgID
      shellex
         DropHandler

Создайте подраздел DropHandler, названный по имени обработчика, и задайте значение по умолчанию подраздела в строковой форме GUID CLSID обработчика. Общие сведения о том, как зарегистрировать обработчики расширений оболочки, см. в разделе Создание обработчиков расширений оболочки.

В следующем примере показаны записи реестра, которые позволяют включить обработчик перетаскивания для примера типа файла .myp.

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}

Создание Обработчиков Расширений Оболочки

IDropTarget

IPersistFile