IOleInPlaceSiteWindowless::SetCapture 方法 (ocidl.h)
启用就地活动无窗口对象来捕获所有鼠标消息。
语法
HRESULT SetCapture(
[in] BOOL fCapture
);
参数
[in] fCapture
如果 为 TRUE,则容器应捕获对象的鼠标。 如果 为 FALSE,则容器应释放对象的鼠标捕获。
返回值
如果成功将鼠标捕获授予对象,此方法将返回S_OK。 如果调用 以释放鼠标捕获,则此方法不得失败。 其他可能的返回值包括以下内容。
返回代码 | 说明 |
---|---|
|
拒绝对 对象捕获鼠标。 |
注解
无窗口对象在其站点对象上使用 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 |