次の方法で共有


IOleInPlaceSiteWindowless::SetCapture メソッド (ocidl.h)

インプレース アクティブなウィンドウレス オブジェクトを有効にして、すべてのマウス メッセージをキャプチャします。

構文

HRESULT SetCapture(
  [in] BOOL fCapture
);

パラメーター

[in] fCapture

TRUE の場合、コンテナーはオブジェクトのマウスをキャプチャする必要があります。 FALSE の場合、コンテナーはオブジェクトのマウス キャプチャを解放する必要があります。

戻り値

マウス キャプチャがオブジェクトに正常に付与された場合、このメソッドはS_OKを返します。 マウス キャプチャを解放するために 呼び出された場合、このメソッドは失敗してはいけません。 その他の可能な戻り値は次のとおりです。

リターン コード 説明
S_FALSE
オブジェクトへのマウス キャプチャが拒否されました。

注釈

ウィンドウレス オブジェクトは、サイト オブジェクトで IOleInPlaceSiteWindowless::SetCaptureTRUE で呼び出すことによって、マウス入力をキャプチャします。 コンテナーはマウス キャプチャを拒否できます。この場合、このメソッドはS_FALSEを返します。 キャプチャが許可されている場合、コンテナーは Windows マウス キャプチャを独自のウィンドウに設定し、マウス カーソルの位置がこのオブジェクトの上にあるかどうかに関係なく、後続のマウス メッセージをオブジェクトにディスパッチする必要があります。

オブジェクトは、後でサイト オブジェクトで IOleInPlaceSiteWindowless::SetCaptureFALSE で呼び出すことで、マウス キャプチャを解放できます。 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