次の方法で共有


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標準の戻り値と、次の値を返すことができます。

リターン コード 説明
S_OK
マウス ポインターが正常に設定されました。
S_FALSE
オブジェクトはカーソルを設定しませんでした。コンテナーでカーソルを設定するか、パラメーター fSetAlwaysTRUE に設定してオブジェクトをもう一度呼び出す必要があります。

注釈

コンテナーは、このメソッドを呼び出して、 IPointerInactive::GetActivationPolicy メソッドを呼び出してオブジェクトのアクティブ化ポリシーを確認した後、非アクティブなオブジェクトの上にマウス ポインターを設定します。 オブジェクトがその呼び出しを通じてインプレースでアクティブ化を要求していない場合、マウス ポインターがオブジェクトの上に留まる限り、コンテナーは OnInactiveSetCursor を呼び出して、後続のWM_SETCURSOR メッセージを非アクティブ オブジェクトにディスパッチします。

丸めエラーを回避し、オブジェクト実装者でジョブを容易にするために、このメソッドは、通常の HIMETRIC 単位ではなく、オブジェクトが表示されるウィンドウを含むクライアント ウィンドウの単位でウィンドウ座標を受け取ります。 したがって、オブジェクトがアクティブで非アクティブな場合は、同じ座標とコード パスを使用できます。 ウィンドウ座標は、マウスの位置を指定します。 外接する四角形は、同じ座標系でも指定されます。

OnInactiveSetCursor は、オブジェクトがカーソルを設定する義務があるかどうかを示す追加のパラメーター fSetAlways を受け取ります。 コンテナーは、最初にこのパラメーター FALSE を使用してこのメソッドを呼び出す必要があります。 オブジェクトは、カーソルが設定されていないことを示すS_FALSEを返す場合があります。 その場合、コンテナーはカーソル自体を設定するか、これを行わない場合は、fSetAlwaysTRUE にして OnInactiveSetCursor メソッドをもう一度呼び出す必要があります。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー ocidl.h

こちらもご覧ください

IPointerInactive