Ir ao conteúdo
  • Cadastre-se

Posição do Cursor no VB


Krad Nale

Posts recomendados

Olá...

Eu precisava, além de capturar a posição X Y do mouse, colocar um outro form exatamente nesta posição. Acontece que esta função retorna a posição em Pixels, então utilizei as funções "TwipsPerPixelX" e "TwipsPerPixelY" para proceder a conversão.

Infelizmente não obtive êxito, gostaria de saber se há uma biblioteca/função mais eficiente.

Por enquanto, continuo batendo a cabeça... :muro:

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Use API. Coloque um Label no Form e o código abaixo:

Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Private Type POINTAPI

    X As Long

    Y As Long

End Type

Dim Posicao As POINTAPI

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

    GetCursorPos Posicao

    CurrentX = 0

    CurrentY = 0

    Label1 = "X=" & CStr(Posicao.X) + ", Y=" & CStr(Posicao.Y)

End Sub

Editando: E para colocar o ponteiro do mouse nas coordenadas, use a API SetCursorPos:

Private Declare Function SetCursorPos Lib "user32" Alias "SetCursorPos" (ByVal x As Long, ByVal y As Long) As Long

Basta passar as coordenadas.

B)

Link para o comentário
Compartilhar em outros sites

Bem, parece que minha intenção não ficou muito clara...

Quero posicionar um outro form exatamente na posição X Y da tela... minha intenção na verdade é implementar um tipo de "ajuda flutuante", posicionando este segundo form (sem bordas) exatamente na posição que o usuário clicar.

Isso explica o porquê eu estar quebrando a cabeça pra converter de pixel pra twip.

Bem, vou utilizar uma outra maneira, por exemplo, restringindo a área onde o usuário pode clicar (uma imagem informativa, por exemplo, posicionando este outro form na posição Left/Top desta imagem, por exemplo)...

Valeu pela ajuda...

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Veja então se é isso:

Coloque dois Forms: Form1 e Form2. Copie e cole o código abaixo no Form1.

Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Private Type POINTAPI

    X As Long

    Y As Long

End Type

Dim Posicao As POINTAPI

Private Sub Form_Click()

    Dim X As Single, Y As Single

   

    GetCursorPos Posicao

    CurrentX = 0

    CurrentY = 0

   

    X = (Posicao.X * Screen.TwipsPerPixelX)

    Y = (Posicao.Y * Screen.TwipsPerPixelY)

   

    If Not (Form2 Is Nothing) Then Unload Form2

   

    With Form2

        .Move X, Y

        .Show

    End With

End Sub

[]'s

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!