Donner le focus à une fenetre

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
olivier
Messages : 305
Inscription : mer. 05/janv./2005 12:58
Localisation : http://www.tib-net.com/meca/index.htm

Donner le focus à une fenetre

Message par olivier »

Bonjour à tous les pure-programmeurs

Voilà, j'ai besoins que mon programme garde le focus tous le temps, sauf lorsqu'il va commander d'autre programme. Le but étant de gérer plusieurs programme avec une télécommande....Bref

J'ai écrit se code qui normalement redonne le focus à la fenêtre à chaque tic....mais cela ne marche pas. Lorsque je clic sur une autre application ma fenetre ne récupère pas le focus !

Si vous avez une idée, merci d'avance :

Code : Tout sélectionner

Procedure TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
    
    Debug "tic"
    UseWindow(0)
    ActivateWindow()
    
EndProcedure

hwindow=OpenWindow(0,10,10,200,200,#PB_Window_SystemMenu,"ess")
CreateGadgetList(WindowID(0))
Timer_1 = SetTimer_(hwindow, 1, 500,  @TimerProc())    

Repeat
event=WaitWindowEvent()
Select event
    Case #PB_Event_Gadget; *****************Choix d'un bouton
        Select EventGadgetID()
            
        EndSelect
EndSelect
Until event=#WM_CLOSE


Vive le temps libre !
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

tu veux dire çà probablement (ce qui n'est pas tout à fait pareil) :

Code : Tout sélectionner

hWnd.l = OpenWindow(0,100,100,300,100,#PB_Window_SystemMenu,"test")

If hWnd
  
  SetTimer_(hWnd,1,50,0)   
  
  Repeat
    
    Select WaitWindowEvent()
      
      Case #WM_CLOSE
        Break
        
      Case #WM_TIMER
        If GetActiveWindow_() <> hWnd
          Debug "Focus perdu."
          If SetForegroundWindow_(hWnd)
            Debug "Focus récupéré."
          EndIf
        EndIf
        
    EndSelect
    
  ForEver
  
  KillTimer_(hWnd,1)
  
EndIf
Dernière modification par Flype le mer. 08/févr./2006 17:00, modifié 1 fois.
Image
olivier
Messages : 305
Inscription : mer. 05/janv./2005 12:58
Localisation : http://www.tib-net.com/meca/index.htm

Message par olivier »

Mais c'est super !
Mercy Flype
Vive le temps libre !
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

Code : Tout sélectionner

hWnd.l = OpenWindow(0,100,100,300,100,#PB_Window_SystemMenu,"test")

If hWnd
  
  SetTimer_(hWnd,1,250,#Null)
  
  Repeat
    
    Select WaitWindowEvent()
      
      Case #WM_CLOSE
        Break
        
      Case #WM_TIMER
        If GetForegroundWindow_() <> hWnd
          Debug "Focus perdu."
          If SetForegroundWindow_(hWnd)
            Debug "Focus récupéré."
          EndIf
        EndIf
        
    EndSelect
    
  ForEver
  
  KillTimer_(hWnd,1)
  
EndIf
Juste un petit correctif, je viens de m'en rendre compte : GetForegroundWindow & SetForegroundWindow
C'est plus logique, quoique çà dépends de tes besoins exacts !
Image
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

par contre je ne m'explique pas pourquoi ActivateWindow() ou SetActiveWindow() en PB4 ne marche comme escomptée... :roll:
Image
Répondre