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的标准返回值,以及以下值。
返回代码 | 说明 |
---|---|
|
已成功设置鼠标指针。 |
|
对象未设置光标;容器应设置游标或再次调用 对象,并将参数 fSetAlways 设置为 TRUE。 |
注解
容器调用此方法,以在通过调用 IPointerInactive::GetActivationPolicy 方法检查对象的激活策略后,将鼠标指针设置到非活动对象上。 如果对象尚未请求通过该调用就地激活,则只要鼠标指针停留在对象上,容器就会通过调用 OnInactiveSetCursor 将后续WM_SETCURSOR消息调度到非活动对象。
为了避免舍入错误并使对象实现程序上的作业更容易,此方法采用其包含客户端窗口的单位(即显示对象的窗口)的窗口坐标,而不是通常的 HIMETRIC 单位。 因此,当对象处于活动状态和处于非活动状态时,可以使用相同的坐标和代码路径。 窗口坐标指定鼠标位置。 边界矩形也在同一坐标系中指定。
OnInactiveSetCursor 采用附加参数 fSetAlways,指示对象是否必须设置游标。 容器应首先使用此参数 FALSE 调用此方法。 对象可能会返回S_FALSE,以指示它未设置游标。 在这种情况下,容器应设置游标本身,或者,如果它不想执行此操作,请再次调用 OnInactiveSetCursor 方法, fSetAlways 为 TRUE。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | ocidl.h |