IOleInPlaceSiteWindowless::SetCapture メソッド (ocidl.h)
インプレース アクティブなウィンドウレス オブジェクトを有効にして、すべてのマウス メッセージをキャプチャします。
構文
HRESULT SetCapture(
[in] BOOL fCapture
);
パラメーター
[in] fCapture
TRUE の場合、コンテナーはオブジェクトのマウスをキャプチャする必要があります。 FALSE の場合、コンテナーはオブジェクトのマウス キャプチャを解放する必要があります。
戻り値
マウス キャプチャがオブジェクトに正常に付与された場合、このメソッドはS_OKを返します。 マウス キャプチャを解放するために 呼び出された場合、このメソッドは失敗してはいけません。 その他の可能な戻り値は次のとおりです。
リターン コード | 説明 |
---|---|
|
オブジェクトへのマウス キャプチャが拒否されました。 |
注釈
ウィンドウレス オブジェクトは、サイト オブジェクトで IOleInPlaceSiteWindowless::SetCapture を TRUE で呼び出すことによって、マウス入力をキャプチャします。 コンテナーはマウス キャプチャを拒否できます。この場合、このメソッドはS_FALSEを返します。 キャプチャが許可されている場合、コンテナーは Windows マウス キャプチャを独自のウィンドウに設定し、マウス カーソルの位置がこのオブジェクトの上にあるかどうかに関係なく、後続のマウス メッセージをオブジェクトにディスパッチする必要があります。
オブジェクトは、後でサイト オブジェクトで IOleInPlaceSiteWindowless::SetCapture を FALSE で呼び出すことで、マウス キャプチャを解放できます。 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 |