IPointerInactive::OnInactiveSetCursor 方法 (ocidl.h)

设置非活动对象的鼠标指针。 当非活动对象位于鼠标指针下时,容器在收到WM_SETCURSOR方法时调用此方法。

语法

HRESULT OnInactiveSetCursor(
  [in] LPCRECT pRectBounds,
  [in] LONG    x,
  [in] LONG    y,
  [in] DWORD   dwMouseMsg,
  [in] BOOL    fSetAlways
);

参数

[in] pRectBounds

以包含窗口的客户端坐标单位指定的对象边界矩形。 当收到WM_SETCURSOR消息时,此参数会告知对象其在屏幕上的确切位置和大小。 此值以客户端坐标系的单位指定。

[in] x

鼠标位置的水平坐标,以客户端的包含窗口的单位为单位。

[in] y

鼠标位置的垂直坐标,以客户端的包含窗口的单位为单位。

[in] dwMouseMsg

发生 WM_SETCURSOR 的鼠标消息的标识符。

[in] fSetAlways

如果此值为 TRUE,则 对象必须设置游标;如果此值为 FALSE,则对象不强制设置游标,在这种情况下应返回S_FALSE。

返回值

此方法可以返回E_FAIL的标准返回值,以及以下值。

返回代码 说明
S_OK
已成功设置鼠标指针。
S_FALSE
对象未设置光标;容器应设置游标或再次调用 对象,并将参数 fSetAlways 设置为 TRUE

注解

容器调用此方法,以在通过调用 IPointerInactive::GetActivationPolicy 方法检查对象的激活策略后,将鼠标指针设置到非活动对象上。 如果对象尚未请求通过该调用就地激活,则只要鼠标指针停留在对象上,容器就会通过调用 OnInactiveSetCursor 将后续WM_SETCURSOR消息调度到非活动对象。

为了避免舍入错误并使对象实现程序上的作业更容易,此方法采用其包含客户端窗口的单位(即显示对象的窗口)的窗口坐标,而不是通常的 HIMETRIC 单位。 因此,当对象处于活动状态和处于非活动状态时,可以使用相同的坐标和代码路径。 窗口坐标指定鼠标位置。 边界矩形也在同一坐标系中指定。

OnInactiveSetCursor 采用附加参数 fSetAlways,指示对象是否必须设置游标。 容器应首先使用此参数 FALSE 调用此方法。 对象可能会返回S_FALSE,以指示它未设置游标。 在这种情况下,容器应设置游标本身,或者,如果它不想执行此操作,请再次调用 OnInactiveSetCursor 方法, fSetAlwaysTRUE

要求

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

另请参阅

IPointerInactive