Win32 API 日本語リファレンス
ホーム › Devices.Display › PFN_DrvMovePointer

PFN_DrvMovePointer

コールバック

シグネチャ

void PFN_DrvMovePointer(
    SURFOBJ* pso,
    INT x,
    INT y,
    RECTL* prcl
);

パラメーター

フィールド型説明
psoSURFOBJ*ディスプレイデバイスのサーフェスを記述する SURFOBJ 構造体へのポインターです。
xINT

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

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

yINT

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

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

prclRECTL*ディスプレイ上でポインターの影響を受けるすべてのピクセルを囲む領域を定義する RECTL 構造体へのポインターです。GDI は、先にポインターを画面から削除することなく、この四角形の中に描画することはありません。このパラメーターは NULL でもかまいません。

公式ドキュメント

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

解説(Remarks)

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

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

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

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

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)