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


Перечисление POINTERINACTIVE (ocidl.h)

Укажите политику активации объекта и используются в методе IPointerInactive::GetActivationPolicy .

Синтаксис

typedef enum tagPOINTERINACTIVE {
  POINTERINACTIVE_ACTIVATEONENTRY = 1,
  POINTERINACTIVE_DEACTIVATEONLEAVE = 2,
  POINTERINACTIVE_ACTIVATEONDRAG = 4
} POINTERINACTIVE;

Константы

 
POINTERINACTIVE_ACTIVATEONENTRY
Значение: 1
Объект должен быть активирован на месте, когда мышь входит в него во время операции перемещения мыши.
POINTERINACTIVE_DEACTIVATEONLEAVE
Значение: 2
Объект должен быть отключен, когда мышь покидает объект во время операции перемещения мыши.
POINTERINACTIVE_ACTIVATEONDRAG
Значение: 4
Объект должен быть активирован на месте при наведении указателя мыши на него во время операции перетаскивания.

Комментарии

Дополнительные сведения об использовании значений POINTERINACTIVE_ACTIVATEONENTRY и POINTERINACTIVE_DEACTIVATEONLEAVE см. в разделе Метод IPointerInactive::GetActivationPolicy .

Значение POINTERINACTIVE_ACTIVATEONDRAG можно использовать для поддержки операций перетаскивания в неактивном объекте. Неактивный объект не имеет окна для регистрации себя в качестве потенциального целевого объекта удаления. Большинство контейнеров игнорируют внедренные, неактивные объекты в качестве целевых объектов удаления из-за накладных расходов, связанных с их активацией.

В качестве альтернативы активации объекта, когда указатель мыши находится на нем во время операции перетаскивания, контейнер может сначала QueryInterface определить, поддерживает ли неактивный объект IPointerInactive. Затем, если объект не поддерживает IPointerInactive, контейнер может предположить, что он не является целевым объектом удаления. Если объект поддерживает IPointerInactive, контейнер вызывает метод IPointerInactive::GetActivationPolicy . Если задано значение POINTERINACTIVE_ACTIVATEONDRAG , контейнер активирует объект на месте, чтобы объект смог зарегистрировать собственный интерфейс IDropTarget .

Контейнер обрабатывает собственный метод IDropTarget::D ragOver , когда выполняются все эти действия. Для выполнения этого метода контейнер возвращает DROPEFFECT_NONE для параметра pdwEffect . Затем операция перетаскивания продолжается путем вызова IDropTarget::D ragLeave контейнера, а затем вызова IDropTarget::D ragEnter объекта.

Важно Для объектов OLE без окон этот механизм немного отличается. Дополнительные сведения об операциях перетаскивания для объектов без окон см. в разделе IOleInPlaceSiteWindowless .
 

Если удаление происходит во внедренном объекте, объект активируется в пользовательском интерфейсе и деактивируется при повторном изменении фокуса. Если удаление объекта не происходит, контейнер должен деактивировать объект при следующем вызове собственного объекта IDropTarget::D ragEnter. Удаление может произойти для третьего активного объекта без промежуточного вызова IDropTarget::D ragEnter контейнера. В этом случае контейнер должен попытаться деактивировать объект, как только это возможно, например при активации пользовательского интерфейса другого объекта.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Верхняя часть ocidl.h

См. также раздел

IDropTarget

IPointerInactive

IPointerInactive::GetActivationPolicy