Page 1 sur 1

Donner le focus à une fenetre

Publié : mer. 08/févr./2006 14:18
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



Publié : mer. 08/févr./2006 15:05
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

Publié : mer. 08/févr./2006 15:28
par olivier
Mais c'est super !
Mercy Flype

Publié : mer. 08/févr./2006 17:12
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 !

Publié : mer. 08/févr./2006 21:40
par Flype
par contre je ne m'explique pas pourquoi ActivateWindow() ou SetActiveWindow() en PB4 ne marche comme escomptée... :roll: