drvMovePointer 函数 (winddi.h)

DrvMovePointer 函数将指针移动到新位置,并确保 GDI 不会干扰指针的显示。

语法

void DrvMovePointer(
  [in] SURFOBJ *pso,
  [in] LONG    x,
  [in] LONG    y,
  [in] RECTL   *prcl
);

参数

[in] pso

指向描述显示设备表面的 SURFOBJ 结构的指针。

[in] x

指定显示器上的 x 坐标,驱动程序应在其中放置指针的热点。

x 值指示驱动程序应从显示器中删除指针,因为绘图即将出现在它当前所在的位置。 如果指针已从显示器中删除,并且 x 值为非否定,则驱动程序应还原指针。

[in] y

指定显示器上的 y 坐标,驱动程序应在其中放置指针的热点。

当驱动程序在 DEVINFO 结构中设置了GCAPS_PANNING标志时,负 y 值指示 GDI 调用此函数只是为了通知驱动程序光标的当前位置。 当前位置可以计算为 (xy+pso-sizlBitmap.cy) >。 未设置 GCAPS_PANNING 标志的驱动程序永远不会收到负 y 坐标。

[in] prcl

指向 RECTL 结构的指针,该结构定义一个区域,该区域绑定受指针在显示器上影响的所有像素。 如果不首先从屏幕中删除指针,GDI 将不会在此矩形中绘制。 此参数可以为 NULL。

返回值

备注

驱动程序有时需要知道指针在屏幕上的当前位置 , 即使 GDI 正在模拟指针 (以便驱动程序不再获得正常的 DrvMovePointer 调用) , 以便处理平移虚拟显示器。 若要接收此通知,驱动程序应在 DEVINFO 结构的 flGraphicsCaps 字段中设置GCAPS_PANNING标志。

在显示驱动程序中绘制任何线程时,不会调用 DrvMovePointer,除非在 DEVINFO 的 flGraphicsCaps 成员中设置了GCAPS_ASYNCMOVE标志。

只有在也实现 DrvSetPointerShape 时,才必须在显示驱动程序中实现 DrvMovePointer

如果驱动程序已使用 DrvSetPointerShape 注册了指定的指针, 则 DrvMovePointer 不得失败。

要求

要求
目标平台 桌面
标头 winddi.h (包括 Winddi.h)

另请参阅

DEVINFO

DrvSetPointerShape

SURFOBJ