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 返回以下值之一:
返回代码 | 说明 |
---|---|
|
GDI 接受形状。 GDI 不会在未先将指针移出方向的情况下,从 以 prcl 编写的矩形进行读取或写入。 |
|
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 |