IOleInPlaceSiteWindowless::SetCapture 方法 (ocidl.h)

启用就地活动无窗口对象来捕获所有鼠标消息。

语法

HRESULT SetCapture(
  [in] BOOL fCapture
);

参数

[in] fCapture

如果 为 TRUE,则容器应捕获对象的鼠标。 如果 为 FALSE,则容器应释放对象的鼠标捕获。

返回值

如果成功将鼠标捕获授予对象,此方法将返回S_OK。 如果调用 以释放鼠标捕获,则此方法不得失败。 其他可能的返回值包括以下内容。

返回代码 说明
S_FALSE
拒绝对 对象捕获鼠标。

注解

无窗口对象在其站点对象上使用 TRUE 调用 IOleInPlaceSiteWindowless::SetCapture 来捕获鼠标输入。 容器可以拒绝鼠标捕获,在这种情况下,此方法返回S_FALSE。 如果授予捕获,则容器必须将 Windows 鼠标捕获设置为其自己的窗口,并将任何后续鼠标消息调度到对象,而不管鼠标光标位置是否在此对象上。

对象稍后可以通过在其站点对象上使用 FALSE 调用 IOleInPlaceSiteWindowless::SetCapture 来释放鼠标捕获。 捕获也可以由于外部事件(例如按下 ESC 键)而释放。 在本例中,对象将通过 WM_CANCELMODE 消息通知该容器连同键盘焦点一起调度。

容器应将所有鼠标消息(包括 WM_SETCURSOR)调度到捕获了鼠标的无窗口 OLE 对象。 如果没有对象捕获鼠标,容器应将鼠标消息调度到鼠标光标下的 对象。

容器通过在无窗口对象上调用 IOleInPlaceObjectWindowless::OnWindowMessage 来调度这些窗口消息。 无窗口对象可以将S_FALSE返回到此方法,以指示它未处理鼠标消息。 然后,容器应通过调用 DefWindowProc 函数对消息执行默认行为。 对于 WM_SETCURSOR,容器可以设置游标本身,也可以不执行任何操作。

对象还可以使用 IOleInPlaceSiteWindowless::OnDefWindowMessage 从容器调用默认消息处理。 对于 WM_SETCURSOR 消息,如果容器未设置游标,则允许对象执行操作。

要求

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

另请参阅

IOleInPlaceSiteWindowless

IOleInPlaceSiteWindowless::OnDefWindowMessage