DrvMovePointer 関数 (winddi.h)

DrvMovePointer 関数は、ポインターを新しい位置に移動し、GDI がポインターの表示に干渉しないようにします。

構文

void DrvMovePointer(
  [in] SURFOBJ *pso,
  [in] LONG    x,
  [in] LONG    y,
  [in] RECTL   *prcl
);

パラメーター

[in] pso

表示装置の表面を記述する SURFOBJ 構造体へのポインター。

[in] x

ドライバーがポインターのホット スポットを配置するディスプレイ上の x 座標を指定します。

負の x 値は、描画が現在存在する場所で発生しようとしているため、ドライバーがディスプレイからポインターを削除する必要があることを示します。 ポインターがディスプレイから削除され、 x 値が負でない場合、ドライバーはポインターを復元する必要があります。

[in] y

ドライバーがポインターのホット スポットを配置するディスプレイ上の y 座標を指定します。

ドライバーが DEVINFO 構造体で GCAPS_PANNING フラグを設定した場合、負の y 値は、GDI がカーソルの現在位置をドライバーに通知するためにのみこの関数を呼び出していることを示します。 現在の位置は として計算できます (xy+pso-sizlBitmap.cy>)。 GCAPS_PANNING フラグを設定しないドライバーは、負の y 座標を受け取ることはありません。

[in] prcl

ディスプレイ上のポインターの影響を受けるすべてのピクセルを境界とする領域を定義する RECTL 構造体へのポインター。 GDI は、最初に画面からポインターを削除しないと、この四角形に描画されません。 このパラメーターは、NULL でもかまいません。

戻り値

なし

解説

ドライバーは、画面上のポインターの現在の位置を知る必要がある場合があります。GDI がポインターをシミュレートしている場合でも (ドライバーが通常 の DrvMovePointer 呼び出しを取得しなくなった場合など)、パン仮想ディスプレイを処理するために必要になります。 この通知を受け取るために、ドライバーは DEVINFO 構造体の flGraphicsCaps フィールドにGCAPS_PANNING フラグを設定する必要があります。

DEVINFO の flGraphicsCaps メンバーでGCAPS_ASYNCMOVE フラグが設定されていない限り、ディスプレイ ドライバーでスレッドが描画されている間、DrvMovePointer は呼び出されません。

DrvSetPointerShape も実装されている場合にのみ、 DrvMovePointer をディスプレイ ドライバーに実装する必要があります。

ドライバーが DrvSetPointerShape を使用して指定したポインターを登録した場合、 DrvMovePointer は失敗しません。

要件

要件
対象プラットフォーム デスクトップ
Header winddi.h (Winddi.h を含む)

こちらもご覧ください

DEVINFO

DrvSetPointerShape

SURFOBJ