Problema con SendMessage [AYUDA]

Iniciado por Psyke1, 10 Junio 2010, 11:47 AM

0 Miembros y 1 Visitante están viendo este tema.

Psyke1

Hola, a ver si me podeis ayudar, porque sinceramente no se lo que puede pasar... :-(
Tengo esto:
Código (vb) [Seleccionar]

Option Explicit

Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Any, ByVal lParam As Long) As Long

Private Sub Form_Load()
   Timer1.Interval = 1500: Text1 = "HOla amigosssss"
End Sub

Private Sub Timer1_Timer()
   Call SendMessage(Text1.hwnd, &H102, vbKeyLeft, 0&)
End Sub

Entonces se supone que cada 1500 ms la posicion del texto deberia moverse un sitio a la izquierda, ¿no? Pero en el text box me va añadiendo el caracter %...  :o
Y si pongo vbKeySpace funciona bien, me va añadiendo espacios, pero porque falla con vbKeyLeft??? :huh:

Gracias! :-*

raul338

Si lo que quieres hacer es cambiar el cursor de posicion (presionar flechitas) estas enviando el mensaje equivocado

El mensaje WM_CHAR (&H102) es para agregar un caracter, y el valor de la flechita en ascii es "%" (creo)

Asi que tienes que enviar un mensaje que presione teclas: WM_KEYDOWN

el code quedaria asi:

Código (vb) [Seleccionar]

Option Explicit

Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Any, ByVal lParam As Long) As Long
Private Const WM_KEYDOWN As Long = &H100

Private Sub Form_Load()
    Timer1.Interval = 1500: Text1 = "HOla amigosssss"
End Sub

Private Sub Timer1_Timer()
    Call SendMessage(Text1.hwnd, WM_KEYDOWN, vbKeyRight, 0&)
End Sub


:) espero que te sirva!!

Psyke1