EngSetPointerShape 函数 (winddi.h)

EngSetPointerShape 函数为调用驱动程序设置指针形状。

语法

ENGAPI ULONG EngSetPointerShape(
  [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

指向 SURFOBJ 结构的指针,该结构定义要应用于指针位图的 AND-XOR 掩码。 位图的上半部分指定单色 AND 掩码,下半部分指定单色 XOR 掩码。 指针的宽度相同,高度是 psoMask 指向的掩码的一半。 指针大小没有隐式约束,但最佳指针大小为 32 x 32、48 x 48 和 64 x 64 像素。 如果此参数为 NULL,则指针是透明的。

[in] psoColor

指向定义颜色指针颜色的 SURFOBJ 结构的指针的指针。 此位图的宽度和 psoMask 指向的位图高度相同,颜色格式与 pso 指向的图相同。 如果此参数为 NULL,则指针为单色。

[in] pxlo

指向定义 psoColor 中颜色的 XLATEOBJ 结构的指针。

[in] xHot

指定指针的热点相对于其左上角像素的 x 坐标。 热点指示的像素应定位在新的指针位置。

[in] yHot

指定指针的热点相对于其左上角像素的 y 坐标。 热点指示的像素应定位在新的指针位置。

[in] x

指定新指针位置的 x 坐标。

[in] y

指定新指针位置的 y 坐标。

[in] prcl

指向 RECTL 结构的指针。 如果不是 NULL,则驱动程序提供了一个矩形,用于绑定受显示器上的指针影响的所有像素。 GDI 避免在此矩形上绘制,而无需先将指针移出。

[in] fl

指定 GDI 应用于处理此调用的一组标志。 此参数可以是以下一个或多个预定义值:

标志 含义
SPS_ANIMATESTART GDI 应准备好接收一系列大小相似的指针形状,这些形状将构成动画指针效果。
SPS_ANIMATEUPDATE GDI 应在动画序列中绘制下一个指针形状。
SPS_CHANGE 请求 GDI 更改指针形状。

返回值

EngSetPointerShape 返回以下值之一:

返回代码 说明
SPS_ACCEPT_EXCLUDE
GDI 接受形状。 GDI 不会在未先将指针移出方向的情况下,从 以 prcl 编写的矩形进行读取或写入。
SPS_ERROR
GDI 通常支持此形状,但由于异常原因而失败。

注解

驱动程序可以调用 EngSetPointerShape ,让 GDI 管理软件游标。

psoMask 指向的单色位图有两个部分。 第一部分定义指针的 AND 掩码,第二部分定义 XOR 掩码。 综合起来,这些掩码为指针图像的每个像素提供两位信息。 下面的事实数据表确定在显示上为 AND 和 XOR 掩码中的不同值绘制的 GDI:

AND 值 XOR 值 结果像素
0 0 White
0 1 黑色
1 0 像素无变化
1 1 像素颜色反转
 

此机制提供黑白图像,同时允许构成指针的像素的透明度和反转。

要求

   
最低受支持的客户端 适用于 Windows 2000 及更高版本的 Windows 操作系统。
目标平台 通用
标头 winddi.h (包括 Winddi.h)
Library Win32k.lib
DLL Win32k.sys

另请参阅

DrvSetPointerShape

EngMovePointer

SURFOBJ

XLATEOBJ