Функция 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
Указатель на структуру XLATEOBJ , которая определяет цвета в psoColor.
[in] xHot
Указывает координату x горячей точки указателя относительно верхнего левого пикселя. Пиксель, указанный горячей точкой, должен располагаться в новой позиции указателя.
[in] yHot
Задает координату y горячей точки указателя относительно верхнего левого пикселя. Пиксель, указанный горячей точкой, должен располагаться в новой позиции указателя.
[in] x
Задает координаты x нового положения указателя.
[in] y
Задает координаты y для новой позиции указателя.
[in] prcl
Указатель на структуру RECTL . Если значение не равно NULL, драйвер предоставил прямоугольник, ограничивающий все пиксели, затронутые указателем на дисплее. GDI позволяет избежать рисования на этом прямоугольнике без предварительного перемещения указателя в сторону.
[in] fl
Задает набор флагов, которые GDI должен использовать для обработки этого вызова. Этот параметр может иметь одно или несколько из следующих предопределенных значений:
Flag | Значение |
---|---|
SPS_ANIMATESTART | GDI должен быть готов к получению ряда похожих по размеру фигур указателей, которые будут содержать эффект анимированного указателя. |
SPS_ANIMATEUPDATE | GDI должен нарисовать следующую фигуру указателя в анимированном сериале. |
SPS_CHANGE | GDI запрашивается для изменения фигуры указателя. |
Возвращаемое значение
EngSetPointerShape возвращает одно из следующих значений:
Код возврата | Описание |
---|---|
|
GDI принимает фигуру. GDI не считывает и не записывает в прямоугольник, записанный в prcl , без предварительного перемещения указателя в сторону. |
|
GDI обычно поддерживает эту форму, но не удалось по необычным причинам. |
Комментарии
Драйвер может вызвать EngSetPointerShape , чтобы GDI управлял программным курсором.
Существует две части монохромного растрового изображения, на которые указывает psoMask . Первая часть определяет маску AND для указателя, а вторая — маску XOR. Вместе эти маски предоставляют два бита информации для каждого пикселя изображения указателя. Следующая таблица истинности определяет, что GDI рисует на экране для различных значений в масках AND и XOR:
И значение | Значение XOR | Результирующий пиксель |
---|---|---|
0 | 0 | Белый |
0 | 1 | Черный |
1 | 0 | Без изменений в пикселях |
1 | 1 | Цвет пикселей инвертирован |
Этот механизм предоставляет черно-белое изображение, обеспечивая прозрачность и инверсию пикселей, составляющих указатель.
Требования
Минимальная версия клиента | Доступно в Windows 2000 и более поздних версиях операционных систем Windows. |
Целевая платформа | Универсальное |
Верхняя часть | winddi.h (включая Winddi.h) |
Библиотека | Win32k.lib |
DLL | Win32k.sys |