Создание обработчиков удаления
По умолчанию файлы не являются целевыми объектами удаления. Члены типа файла можно сделать целевыми объектами перетаскивания, реализовав и зарегистрировав обработчик перетаскивания.
Если обработчик перетаскивания зарегистрирован для типа файла, он вызывается всякий раз, когда объект перетаскивается или удаляется на член этого типа файла. Оболочка управляет операцией, вызывая соответствующие методы в интерфейсе IDropTarget обработчика.
Общие процедуры реализации и регистрации обработчика расширений оболочки рассматриваются в разделе Создание обработчиков расширений оболочки. В этом документе рассматриваются те аспекты реализации, которые относятся к обработчикам удаления.
Инструкции
Шаг 1. Реализация обработчиков удаления
Как и все обработчики расширений оболочки, обработчики перетаскивания являются внутрипроцессными объектами модели COM, реализованными в виде библиотек DLL. В дополнение к IUnknown они экспортируют два интерфейса: IPersistFile и IDropTarget.
Оболочка инициализирует обработчик с помощью интерфейса IPersistFile . Он использует этот интерфейс для запроса идентификатора класса обработчика (CLSID) и предоставляет ему имя файла. Общие сведения о реализации обработчиков расширений оболочки, включая интерфейс IPersistFile , см. в разделе Создание обработчиков расширений оболочки.
После инициализации обработчика перетаскивания оболочка вызывает соответствующий метод в интерфейсе 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}
Связанные темы