Compartilhar via


Função EngSetPointerShape (winddi.h)

A função EngSetPointerShape define a forma do ponteiro para o driver de chamada.

Sintaxe

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
);

Parâmetros

[in] pso

Ponteiro para uma estrutura SURFOBJ que descreve a superfície na qual desenhar.

[in] psoMask

Ponteiro para uma estrutura SURFOBJ que define a máscara AND-XOR a ser aplicada ao bitmap do ponteiro. A metade superior do bitmap especifica a máscara AND monocromática e a metade inferior especifica a máscara XOR monocromática. O ponteiro tem a mesma largura e metade da altura da máscara para a qual psoMask aponta. Não há restrições implícitas em tamanhos de ponteiro, mas os tamanhos de ponteiro ideais são 32 x 32, 48 x 48 e 64 x 64 pixels. Se esse parâmetro for NULL, o ponteiro será transparente.

[in] psoColor

Ponteiro para uma estrutura SURFOBJ que define as cores de um ponteiro de cor. Esse bitmap tem a mesma largura e metade da altura do bitmap para o qual psoMask aponta e está no mesmo formato de cor que a superfície para a qual pso aponta. Se esse parâmetro for NULL, o ponteiro será monocromático.

[in] pxlo

Ponteiro para uma estrutura XLATEOBJ que define as cores em psoColor.

[in] xHot

Especifica a coordenada x do ponto de acesso do ponteiro em relação ao pixel superior esquerdo. O pixel indicado pelo ponto de acesso deve ser posicionado na nova posição do ponteiro.

[in] yHot

Especifica a coordenada y do ponto de acesso do ponteiro em relação ao pixel superior esquerdo. O pixel indicado pelo ponto de acesso deve ser posicionado na nova posição do ponteiro.

[in] x

Especifica as coordenadas x da nova posição do ponteiro.

[in] y

Especifica as coordenadas y da nova posição do ponteiro.

[in] prcl

Ponteiro para uma estrutura RECTL . Se não for NULL, o driver forneceu um retângulo que vincula todos os pixels afetados pelo ponteiro na tela. A GDI evita desenhar nesse retângulo sem primeiro mover o ponteiro para fora do caminho.

[in] fl

Especifica um conjunto de sinalizadores que o GDI deve usar para processar essa chamada. Esse parâmetro pode ser um ou mais dos seguintes valores predefinidos:

Sinalizador Significado
SPS_ANIMATESTART O GDI deve estar preparado para receber uma série de formas de ponteiro de tamanho semelhante que serão compostas por um efeito de ponteiro animado.
SPS_ANIMATEUPDATE O GDI deve desenhar a próxima forma de ponteiro na série animada.
SPS_CHANGE O GDI é solicitado a alterar a forma do ponteiro.

Valor retornado

EngSetPointerShape retorna um dos seguintes valores:

Código de retorno Descrição
SPS_ACCEPT_EXCLUDE
A GDI aceita a forma. O GDI não lê ou grava no retângulo escrito em prcl sem primeiro mover o ponteiro para fora do caminho.
SPS_ERROR
A GDI normalmente dá suporte a essa forma, mas falhou por motivos incomuns.

Comentários

O driver pode chamar EngSetPointerShape para que o GDI gerencie um cursor de software.

Há duas partes no bitmap monocromático para o qual psoMask aponta. A primeira parte define a máscara AND para o ponteiro enquanto a segunda parte define a máscara XOR. Juntas, essas máscaras fornecem dois bits de informações para cada pixel da imagem do ponteiro. A tabela de verdade a seguir determina o que o GDI desenha na exibição para valores diferentes nas máscaras AND e XOR:

VALOR AND Valor XOR Pixel resultante
0 0 Branca
0 1 Preto
1 0 Nenhuma alteração no pixel
1 1 A cor do pixel é invertida
 

Esse mecanismo fornece uma imagem em preto e branco, permitindo transparência e inversão dos pixels que compõem o ponteiro.

Requisitos

   
Cliente mínimo com suporte Disponível no Windows 2000 e versões posteriores dos sistemas operacionais Windows.
Plataforma de Destino Universal
Cabeçalho winddi.h (inclua Winddi.h)
Biblioteca Win32k.lib
DLL Win32k.sys

Confira também

DrvSetPointerShape

EngMovePointer

SURFOBJ

XLATEOBJ