Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Teclado en pantalla VB6

Estas en el tema de Teclado en pantalla VB6 en el foro de Visual Basic clásico en Foros del Web. Hola a todos, Mi problema es el siguiente: Desearía crear un teclado en pantalla (como el que se puede ejecutar desde Windows) pero, lógicamente, customizado ...
  #1 (permalink)  
Antiguo 15/10/2008, 11:15
Avatar de Laforge  
Fecha de Ingreso: noviembre-2004
Ubicación: Galaxia 34, Cuadrante 972, Área 31
Mensajes: 174
Antigüedad: 19 años, 6 meses
Puntos: 2
Pregunta Teclado en pantalla VB6

Hola a todos,

Mi problema es el siguiente:

Desearía crear un teclado en pantalla (como el que se puede ejecutar desde Windows) pero, lógicamente, customizado según mis necesidades (botones más grandes y otras funciones).

Tengo solucionadas las pulsaciones de teclado y la activación del formulario receptor de las pulsaciones pero el problema es que, al hacer 'click' sobre uno de los botones del teclado, el formulario del teclado captura el foco, el control del formulario receptor ejecuta los eventos de LOSTFOCUS y al devolverlo al formulario del programa receptor (antes de lanzar el keybd_event con la pulsación de teclado) éste ejecuta los eventos de GOTFOCUS del control que recibe el foco que, además, es el control con el tabindex 0 del formulario (que no tiene porqué ser el control al que yo quería enviar la pulsación).

Observando el funcionamiento del teclado en pantalla de windows, me he fijado en que éste NO SE ACTIVA, o sea, el formulario receptor NUNCA pierde el foco cuando hago click sobre una tecla. Husmeando por ahí he encontrado ciertas pistas (.NET) :

(agregar esto al formulario)

Cita:
Protected Overloads Overrides ReadOnly Property CreateParams() As CreateParams
Get
Const WS_EX_NOACTIVATE As Integer = 134217728
Dim param As CreateParams = MyBase.CreateParams
param.ExStyle = param.ExStyle Or WS_EX_NOACTIVATE
Return param
End Get
End Property
...a mi me parece que esto del ExStyle con el valor de WS_EX_NOACTIVE debe ser lo que evita que el formulario recoja el foco cuando lo 'clickeamos'.

Alguién sabe como conseguir esto mismo en VB6 ???????

Saludos y gracias
__________________
Nunca esperes un mejor momento para abrir esa botella de vino...........nunca llega.

No hay vida después de MySQL
  #2 (permalink)  
Antiguo 19/10/2008, 04:25
 
Fecha de Ingreso: octubre-2008
Mensajes: 127
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Teclado en pantalla VB6

Hola,

deberías, mediante WinApi, indicarle al formulario que contiene tu teclado que es TOP_MOST. De esta forma siempre estará visible, independientemente de la aplicación que tenga el foco.

Suerte!
  #3 (permalink)  
Antiguo 20/10/2008, 04:30
Avatar de Laforge  
Fecha de Ingreso: noviembre-2004
Ubicación: Galaxia 34, Cuadrante 972, Área 31
Mensajes: 174
Antigüedad: 19 años, 6 meses
Puntos: 2
Respuesta: Teclado en pantalla VB6

Gracias,

...pero el problema no es que esté siempre 'encima' (que ya está solucionado), sino que al hacer 'click' en cualquiera de las letras, NO COJA EL FOCO de la aplicación que lo tiene...
__________________
Nunca esperes un mejor momento para abrir esa botella de vino...........nunca llega.

No hay vida después de MySQL
  #4 (permalink)  
Antiguo 02/03/2011, 12:09
 
Fecha de Ingreso: marzo-2011
Mensajes: 2
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Teclado en pantalla VB6

Hola, cuéntame si pudiste resolver el problema del teclado en pantalla.

Saludos
  #5 (permalink)  
Antiguo 03/03/2011, 02:57
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Teclado en pantalla VB6

Yo medio lo solucioné haciendo que la ventana del teclado, antes de mandar la pulsacion de la tecla pinchada, envie la pulsacion del TAB para volver a la ventana que estaba activa antes que ella.

Ejmp. al pulsar la G se envia:

SendKeys "%{TAB}"
SendKeys "G"

De este modo se cambia de ventana y se pulsa la G en la ventana correcta quedandonos de nuevo con esa ventana enfocada.

Funciona bien, al menos siempre que solo tengas en el escritorio 2 programas: el teclado y el receptor de las pulsaciones.
En teoria no deberia de dar problemas habiendo mas programas abiertos, pero en la práctica te encuentras con que algunos programas están esperando pulsaciones o tienen un foco muy "sensible" y reciben las pulsaciones antes que el programa sobre el que queremos influir.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:14.