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_ACTIVATEONENTRYPOINTERINACTIVE_DEACTIVATEONLEAVE 值的详细信息,请参阅 IPointerInactive::GetActivationPolicy 方法。

POINTERINACTIVE_ACTIVATEONDRAG 值可用于支持对非活动对象执行拖放操作。 非活动对象没有将自身注册为潜在放置目标的窗口。 由于与激活它们相关的开销,大多数容器会忽略嵌入的非活动对象作为放置目标。

作为在拖放操作期间鼠标指针位于对象上方时激活对象的替代方法,容器可以先 QueryInterface 来确定非活动对象是否支持 IPointerInactive。 然后,如果对象不支持 IPointerInactive,容器可以假定它不是放置目标。 如果 对象确实支持 IPointerInactive,则容器将调用 IPointerInactive::GetActivationPolicy 方法。 如果设置了 POINTERINACTIVE_ACTIVATEONDRAG 值,容器将就地激活对象,以便对象可以注册其自己的 IDropTarget 接口。

发生所有这些操作时,容器正在处理其自己的 IDropTarget::D ragOver 方法。 若要完成该方法,容器将返回 pdwEffect 参数DROPEFFECT_NONE。 然后,通过调用容器的 IDropTarget::D ragLeave ,然后调用对象的 IDropTarget::D ragEnter 继续拖放操作。

重要 对于无窗口 OLE 对象,此机制略有不同。 有关无窗口对象的拖放操作的详细信息,请参阅 IOleInPlaceSiteWindowless
 

如果放置发生在嵌入的对象上,则对象是 UI 激活的,当焦点再次更改时,该对象将停用 UI。 如果对象上未发生放置,则容器应在下次获取对其自己的 IDropTarget::D ragEnter 的调用时停用该对象。 删除可以在第三个活动对象上发生,而无需对容器的 IDropTarget::D ragEnter 进行干预调用。 在这种情况下,容器应尽快尝试停用对象,例如,当它 UI 激活另一个对象时。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
标头 ocidl.h

另请参阅

IDropTarget

IPointerInactive

IPointerInactive::GetActivationPolicy