Pergunta

Eu estou escrevendo um aplicativo de gravação de tela para Windows em Delphi 7 e gostaria de saber quando o ponteiro do mouse muda em meu aplicativo (como a partir de um ponteiro normal para um ponteiro de redimensionamento, etc).

Atualmente o que estou fazendo está pintando o ponteiro do mouse sobre um in-memory toda bitmap o mouse se move (e em um temporizador) e fazendo um pixel por pixel de comparação dele com o último bitmap que eu pintei.

Embora a comparação é bastante rápido (cerca de 2-5ms) porque está acontecendo com tanta frequência (a cada movimento do mouse), acrescenta-se. Eu acho que tem que haver uma maneira mais rápida e menos complicado!

Foi útil?

Solução

Você tem um identificador para o cursor, certo? Se é o mesmo valor identificador que você tinha antes, então eu acho que é razoável supor que parece o mesmo, também. Se o cursor parece diferente, ele terá um valor de identificador diferente.

Isso certamente deve ser verdade para os cursores de sistema padrão. Se o aplicativo que você está gravando está criando novas cursores enquanto ele está funcionando, então talvez que seria capaz de atualizar a aparência do cursor atual sem realmente fazer um novo objeto cursor no sistema operacional (e, assim, manter o mesmo valor de identificador), mas eu não acho que isso é provável, especialmente desde saídas SetCursor imediatamente quando o cursor não mudou, e eu espero que a função API não faz a comparação gráfica que você está tentando evitar, também. Ele apenas compara o valor HCursor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top