DrvSetPointerShape 関数 (winddi.h)
DrvSetPointerShape 関数は、ドライバーがポインターをディスプレイから引き出すようドライバーに要求するために使用されます。新しいポインター図形の設定を試みる場合。および を使用して、指定した位置にあるディスプレイに新しいポインターを配置します。
構文
ULONG DrvSetPointerShape(
[in] SURFOBJ *pso,
[in] SURFOBJ *psoMask,
[in] SURFOBJ *psoColor,
[in] XLATEOBJ *pxlo,
[in] LONG xHot,
[in] LONG yHot,
[in] LONG x,
[in] LONG y,
[in] RECTL *prcl,
[in] FLONG fl
);
パラメーター
[in] pso
描画するサーフェスを記述する SURFOBJ 構造体へのポインター。
[in] psoMask
AND-XOR マスクを定義する SURFOBJ 構造体へのポインター。 (AND-XOR マスクについては、「 モノクロ ポインターの描画」を参照してください)。このビットマップのサイズによって、ポインターのサイズが決まります。 ポインター サイズには暗黙的な制約はありませんが、最適なポインター サイズは 32 x 32、48 x 48、64 x 64 ピクセルです。 このパラメーターが NULL の場合、ポインターは透過的です。
[in] psoColor
カラー ポインターの色を定義する SURFOBJ 構造体へのポインター。 このパラメーターが NULL の場合、ポインターはモノクロになります。 ポインター ビットマップの幅は psoMask と同じで、高さは半分です。
[in] pxlo
psoColor の色を定義する XLATEOBJ 構造体へのポインター。
[in] xHot
ポインターのホット スポットの x 位置を左上のピクセルを基準にして指定します。 ホット スポットによって示されるピクセルは、新しいポインター位置に配置する必要があります。
[in] yHot
ポインターのホット スポットの y 位置を左上のピクセルに対して相対的に指定します。 ホット スポットによって示されるピクセルは、新しいポインター位置に配置する必要があります。
[in] x
新しいポインター位置の x 座標を指定します。
[in] y
新しいポインター位置の y 座標を指定します。
[in] prcl
ポインターの可視部分の狭いバインドを指定する四角形をドライバーが書き込む場所を示す RECTL 構造体を指定します。
[in] fl
拡張可能なフラグのセットを指定します。 ドライバーが認識できないフラグが設定されている場合、ドライバーは呼び出しを拒否する必要があります。 このパラメーターには、次の定義済み値のうち 1 つ以上と、ドライバー定義値を 1 つ以上指定できます。
フラグ | 説明 |
---|---|
SPS_ALPHA | ポインターにはピクセルごとのアルファ値があります。 |
SPS_ANIMATESTART | ドライバーは、アニメーション化されたポインター効果を構成する一連の同様のサイズのポインター図形を受け取る準備をする必要があります。 |
SPS_ANIMATEUPDATE | ドライバーは、アニメーション化されたシリーズの次のポインター図形を描画する必要があります。 |
SPS_ASYNCCHANGE | このフラグは、互換性のために残されています。 レガシ ドライバーの場合、ドライバーは、デバイス上で他の描画が進行中である間にハードウェア内のポインターの形状を変更できる場合にのみ、変更を受け入れる必要があります。 GDI では、DEVINFO 構造体の flGraphicsCaps メンバーで現在使用されなくなったGCAPS_ASYNCCHANGE フラグが設定されている場合にのみ、このオプションが使用されます。 |
SPS_CHANGE | ドライバーは、ポインターの図形を変更するように要求されます。 |
SPS_FREQMASK | ドライバーは、マウス の軌跡をレンダリングするように要求され、式 fl & SPS_FREQMASK で示されているように、1 ミリ秒あたりに何度もイメージを更新します。 マウス 証跡をレンダリングできるドライバーには、DEVINFO 構造体の flGraphicsCaps2 メンバーにGCAPS2_MOUSETRAILS フラグが設定されている必要があります。 |
SPS_LENGTHMASK | ドライバーは、式 fl & SPS_LENGTHMASK で示される長さのマウス の軌跡をレンダリングするように要求されます。 (長さ N のマウス の軌跡は、N + 1 個のカーソル 画像で構成されます)。マウス 証跡をレンダリングできるドライバーには、その DEVINFO 構造体の flGraphicsCaps2 メンバーにGCAPS2_MOUSETRAILS フラグが設定されている必要があります。 |
戻り値
戻り値には、次のいずれかの値を指定できます。
リターン コード | 説明 |
---|---|
|
現在は使用されていません。 GDI は、ドライバーのポインターを無効にし、ドライバーがこの値を返す場合は、ソフトウェア シミュレーションに戻ります。 |
|
ドライバーは図形を受け入れます。 図形はハードウェアでサポートされており、GDI はポインターを上書きする他の図面を気にしません。 |
|
ドライバーは図形をサポートしていないため、GDI はそれをシミュレートする必要があります。 |
|
ドライバーは通常、この図形をサポートしていますが、通常とは異なる理由で失敗しました。 |
注釈
ディスプレイ ドライバーの場合、DrvSetPointerShape は省略可能です。 ただし、この関数を実装する場合は、 DrvMovePointer も実装する必要があります。
psoMask および psoColor ポイントが一意のポインターに対して一意である SURFOBJ 構造体の iUniq メンバー。 ドライバーは、これらの構造体の一意の dhsurf ハンドルと組み合わせてこの情報をカーソル キャッシュのキャッシュ キーとして使用できます。
fl パラメーターで SPS_ALPHAが設定されている場合、psoMask は NULL で、psoColor は 32bpp BGRA サーフェスを指します。 ピクセル単位のアルファ値は、対応するポインター ピクセルの不透明度を、デスクトップ ピクセルの下に示します。 ソース アルファ形式は事前に乗算されます。つまり、ソース サーフェスの各カラー チャネルは、対応するアルファ値で既に事前に乗算されているため、ブレンド時の乗算演算が不要になります。
既定のアルファ カーソルは、大部分が白黒で、アルファ値の範囲が広くなります。ただし、アプリケーションは任意のカーソル自体を指定できるため、色の制限はありません。 一般的なアルファ ポインター のサイズは、アルファを持たない一般的なポインターよりも約 8 ピクセル大きいサイズです。 これは、結果のポインター ビットマップ図形を展開するぼかしフィルターによって実現される影の効果に対応します。 ポインターの大部分は、64 x 64 ピクセルのビットマップ以下になります。
ドライバーは、DrvEnablePDEV によって返される DEVINFO 構造体の flGraphicsCaps2 メンバーにGCAPS2_ALPHACURSOR フラグを設定することで、ピクセル単位のアルファ値を持つポインターを処理する機能を示します。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | winddi.h (Winddi.h を含む) |