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

PFN_DrvSetPointerShape

コールバック

シグネチャ

DWORD PFN_DrvSetPointerShape(
    SURFOBJ* param0,
    SURFOBJ* param1,
    SURFOBJ* param2,
    XLATEOBJ* param3,
    INT param4,
    INT param5,
    INT param6,
    INT param7,
    RECTL* param8,
    DWORD param9
);

パラメーター

フィールド型
param0SURFOBJ*
param1SURFOBJ*
param2SURFOBJ*
param3XLATEOBJ*
param4INT
param5INT
param6INT
param7INT
param8RECTL*
param9DWORD

公式ドキュメント

DrvSetPointerShape 関数は、ドライバーがポインターをディスプレイ上に描画している場合はそれを取り除き、新しいポインター形状の設定を試み、指定された位置に新しいポインターをディスプレイ上に表示するよう、ドライバーに要求するために使用されます。

戻り値

戻り値は、次のいずれかの値になります。

リターンコード 説明
SPS_ACCEPT_EXCLUDE
廃止されています。ドライバーがこの値を返した場合、GDI はドライバーのポインターを無効にし、ソフトウェアによるシミュレーションに戻します。
SPS_ACCEPT_NOEXCLUDE
ドライバーは形状を受け入れます。その形状はハードウェアでサポートされており、GDI は他の描画がポインターを上書きすることを考慮する必要がありません。
SPS_DECLINE
ドライバーはこの形状をサポートしていないため、GDI がシミュレートする必要があります。
SPS_ERROR
ドライバーは通常この形状をサポートしていますが、通常とは異なる理由で失敗しました。

解説(Remarks)

DrvSetPointerShape は、ディスプレイドライバーでは省略可能です。ただし、この関数を実装する場合は、DrvMovePointer も実装する必要があります。

psoMask と psoColor が指す SURFOBJ 構造体の iUniq メンバーは、ポインターごとに一意の値になります。ドライバーは、この情報をこれらの構造体の一意な dhsurf ハンドルと組み合わせて、カーソルをキャッシュする際のキャッシュキーとして使用できます。

fl パラメーターに SPS_ALPHA が設定されている場合、psoMask は NULL であり、psoColor は 32bpp の BGRA サーフェスを指します。ピクセルごとのアルファ値は、対応するポインターのピクセルと、その下にあるデスクトップのピクセルとの不透明度を示します。ソースのアルファ形式は乗算済み (premultiplied) です。つまり、ソースサーフェスの各カラーチャネルには対応するアルファ値があらかじめ乗算されており、ブレンド時の乗算処理が不要になります。

既定のアルファカーソルは大部分が白黒で、幅広いアルファ値を持ちます。ただし、アプリケーションが任意のカーソルを指定できるため、色に関する制限はありません。アルファ付きポインターの一般的なサイズは、アルファのない一般的なポインターよりも寸法が約 8 ピクセル大きくなります。これは、結果として得られるポインタービットマップの形状を広げるぼかしフィルターによって実現される影の効果に対応するためです。大多数のポインターは、64x64 ピクセル以下のビットマップになります。

ドライバーは、DrvEnablePDEV が返す DEVINFO 構造体の flGraphicsCaps2 メンバーに GCAPS2_ALPHACURSOR フラグを設定することで、ピクセルごとのアルファ値を持つポインターを処理できることを示します。

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