Как создавать обработчики перетаскивания
По умолчанию файлы не являются целевыми объектами удаления. Чтобы сделать элементы типа файла целевыми объектами перетаскивания, реализуйте и зарегистрируйте обработчик .
Если обработчик перетаскивания зарегистрирован для типа файла, он вызывается всякий раз, когда объект перетаскивается или сбрасывается на элемент типа файла. Оболочка управляет операцией, вызывая соответствующие методы в интерфейсе 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}
Связанные разделы