Autor
|
Tema: Duda GetCursorPos (Leído 2,611 veces)
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
Hola... Estoy en un proyecto donde utilizo la función mencionada, con el fin de mostrar en una etiqueta la posición exacta del mouse a medida que se va moviendo. El problema es que lo utilizo de la siguiente manera: Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) GetCursorPos pt Label3.Caption = "X:" & Str$(pt.x) & " Y:" + Str$(pt.y) End Sub
Ciertas veces, es medio "lenta" la letura y cuando muevo el mouse tarda un segundo y medio en refrescar. Será mejor colocar un timer?
|
|
|
En línea
|
|
|
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
Para no abrir otro thread... Utilizo este procedimiento para obtener una posicion guardada en un textfile para luego ubicar mi mouse en esa posición, pero resulta que la posición obtenida por mi getcursorpos la obtiene del formulario y no de la pantalla, ya que el setcursorpos difiere uno 10x X 10y Private Sub Command1_Click() Open "C:\posicion.txt" For Input As #1 Dim s_linea As String, s_file As String Do Until EOF(1) Line Input #1, s_linea s_file = s_file + s_linea + vbCrLf Loop Close #1 f_posx = Mid(s_file, 4, 3) f_posy = Mid(s_file, 11, 3) i_posx = Val(f_posx) i_posy = Val(f_posy) Dim RT_val As Long RT_val = SetCursorPos(i_posy, i_posx) End Sub
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
Hola... Estoy en un proyecto donde utilizo la función mencionada, con el fin de mostrar en una etiqueta la posición exacta del mouse a medida que se va moviendo. El problema es que lo utilizo de la siguiente manera: Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) GetCursorPos pt Label3.Caption = "X:" & Str$(pt.x) & " Y:" + Str$(pt.y) End Sub
Ciertas veces, es medio "lenta" la letura y cuando muevo el mouse tarda un segundo y medio en refrescar. Será mejor colocar un timer? Tu codigo se corre SOLO CUANDO SE PASA el Mouse sobre el FORM DIRECTAMENTE No aplica sobre controles.¡!, asi que no se ve la real utilidad del codigo si es que puedes usar las variables de X y Y de tal evento en lugar de la API, Si lo que quieres es que en todo momento muestre la pos X y Y ponlo en un Timer de lo contrario solo seria el Switch en cada X evento (en este caso el MouseMove del Form).
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
Muchas gracias BlackZeroX... Eso explica tal vez mi otra duda pero resulta que la posición obtenida por mi getcursorpos la obtiene del formulario y no de la pantalla Ahora lo pruebo.
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
Muchas gracias BlackZeroX... Eso explica tal vez mi otra duda pero resulta que la posición obtenida por mi getcursorpos la obtiene del formulario y no de la pantalla Ahora lo pruebo. GEtCursorPos (APi obtiene de la pantalla completa segun tu resoluciona ctual los valores X y Y solo del Formualrio tomando en cuenta SOLO el tamaño del mismo)
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
Exactamente Private Sub Timer3_Timer() Dim x As Single Dim y As Single GetCursorPos pt Label3.Caption = "X:" & Str$(pt.x) & " Y:" + Str$(pt.y) End Sub
Y ahora mi setcursorpos funciona para toda la pantalla y de manera correcta... La verdad no se si existirá una manera de sustituir mi timer con otra api... Gracias BlackZeroX
|
|
|
En línea
|
|
|
|
el_c0c0
Desconectado
Mensajes: 307
|
Exactamente Private Sub Timer3_Timer() Dim x As Single Dim y As Single GetCursorPos pt Label3.Caption = "X:" & Str$(pt.x) & " Y:" + Str$(pt.y) End Sub
Y ahora mi setcursorpos funciona para toda la pantalla y de manera correcta... La verdad no se si existirá una manera de sustituir mi timer con otra api... Gracias BlackZeroX SetTimer, KillTimer Cobein hizo un modulo de clase para reemplazar al timer comun, usando las apis y subclass. Pero con las apis solas va a funcionar igual! saludos
|
|
|
En línea
|
'- coco "Te voy a romper el orto"- Las hemorroides
|
|
|
cobein
|
Podes usar un hook global (WH_MOUSE_LL) para obtener las coordenadas permanentemente y para posicionar la etiqueta correctamente podes usar ScreenToClient.
|
|
« Última modificación: 29 Junio 2009, 08:20 am por cobein »
|
En línea
|
|
|
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
hook global (WH_MOUSE_LL) Exactamente cobein a eso me refería gracias. Ya estaré comentando.
|
|
|
En línea
|
|
|
|
|
|