Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-07-2011
luis1980 luis1980 is offline
Miembro
 
Registrado: may 2008
Posts: 33
Poder: 0
luis1980 Va por buen camino
Problema con SetFocus

Hola a todos, programo en C++ Builder 2007, quiero usar la función SetFocus del API de Windows, pero el problema es que se confunde con el SetFocus del propio CodeGear. Supongo que tendré que indicarle que quiero usar la función del API de Windows poniendo delante la clase o el namespace o algo, pero no sé cual es. He probado con Windows::SetFocus pero me dice que no es miembro de Windows.
Si alguien sabe como tengo que llamar a la función gracias de antemano.
Responder Con Cita
  #2  
Antiguo 21-07-2011
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 147
Poder: 18
_cero_ Va por buen camino
Prueba con, “::SetFocus( Handle );”
Responder Con Cita
  #3  
Antiguo 22-07-2011
luis1980 luis1980 is offline
Miembro
 
Registrado: may 2008
Posts: 33
Poder: 0
luis1980 Va por buen camino
Gracias _cero_, así no me da error, otra forma de que no me de error es llamándola desde otra función fuera del evento onclick del botón. Pero de todas formas no me funciona no sé por que, pretendo mandar a el foco a otra aplicación para mandarle unas pulsaciones de teclado, para ello obtengo el manejador de la ventana con FindWindow y luego el SetFocus, pero no hace nada, la única forma en que consigo mandarle el foco es obteniendo el manejador y luego minimizando y maximizando la ventana, pero no me parece muy elegante.
Gracias por tu respuesta.
Responder Con Cita
  #4  
Antiguo 22-07-2011
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 147
Poder: 18
_cero_ Va por buen camino
mmm tampoco estoy muy seguro de porque el set focus no funciona, supongo que necesitas hacer más con la aplicación externa (no sabría decirte que, revisa la MSDN), pero para sintetizar teclas yo uso el “keybd_event” el problema de esta función es que no manda teclas a una ventana sino a quien tiene el foco, así que lo que podrías hacer es:

1 evitar que tu aplicación reciba el foco.
2 poner darle el foco a la aplicación X.
3 usar “keybd_event” para sintetizar teclas.

Te pongo código
paso 1, esto va en el OnCreate
Código:
    long wsex=GetWindowLongPtr(Handle,GWL_EXSTYLE);
    wsex |= WS_EX_NOACTIVATE;
    SetWindowLongPtr(Handle,GWL_EXSTYLE,wsex);
    SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE+SWP_NOMOVE);
paso 3
Código:
    String Cadena = "LAS LETRAS MAYUSCULAS";

    for(int i = 1; i <= Cadena.Length(); i++) {
        keybd_event( Cadena[ i ], 0, 0, 0 );
        keybd_event( Cadena[ i ], 0, KEYEVENTF_KEYUP, 0 );
    }

    keybd_event( VK_RETURN, 0, 0, 0 );              //
    keybd_event( VK_RETURN, 0, KEYEVENTF_KEYUP, 0); //Mando un enter
el problema de esto es que el código que puse es lo básico de un teclado virtual, es decir el usuario enfoca la aplicación y escribe desde la nuestra (con botones), pero no sé cómo simular el enfoque, si por ahí te sale lo posteas, para saber.
Responder Con Cita
  #5  
Antiguo 25-07-2011
luis1980 luis1980 is offline
Miembro
 
Registrado: may 2008
Posts: 33
Poder: 0
luis1980 Va por buen camino
Gracias por tus respuestas _cero_, de momento el tema del foco lo voy a dejar minizando la aplicación y maximizándola después, para salir del paso, si descubro por qué no me va el SetFocus lo postearé.

Muchas gracias.
Responder Con Cita
  #6  
Antiguo 25-07-2011
luis1980 luis1980 is offline
Miembro
 
Registrado: may 2008
Posts: 33
Poder: 0
luis1980 Va por buen camino
Bueno he encontrado otra función que sí me va, SetForeGroundWindow(HANDLE), que me trae la ventana al frente y le da el foco. No sé que diferencias habrá entre esta función y SetFocus, pero el resultado me vale.
Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Frame y setfocus mjjj Varios 3 09-01-2008 19:49:57
SpeedButton SetFocus lpedrazzi Varios 2 05-12-2007 16:23:18
SetFocus a un Edit en JavaScript Ricardojosep HTML, Javascript y otros 2 25-10-2007 17:12:04
SetFocus en un Stringrid jaime cotino Varios 1 03-06-2004 19:34:30


La franja horaria es GMT +2. Ahora son las 15:34:54.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi