Mettre un fenêtre au premier plan

Programmation d'applications complexes
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Mettre un fenêtre au premier plan

Message par Le Soldat Inconnu »

Salut,

je souhaite mettre une fenêtre qui est cachée sous une autre au premier plan.

j'ai trouvé ça mais c'est pas top :

il faut lancer le code, mettre une fenêtre devant la fenêtre de test (l'éditeur de pb par exemple) et appuyé sur ALT + A pour mettre la fenêtre au premier

Code : Tout sélectionner

OpenWindow(0, 0, 0, 200, 200, #PB_Window_ScreenCentered, "Test")

If CreateGadgetList(WindowID())
  TextGadget(1, 5, 5, 150, 15, "")
EndIf

#HotKeyID = 45

; On associe un touche au programme
; Ici la touche "Alt + A"
RegisterHotKey_(WindowID(0), #HotKeyID, #MOD_ALT, #PB_Shortcut_A)

Repeat
  Event = WaitWindowEvent()
  
  If Event = #WM_HOTKEY ; Si on appui sur une touche de raccourci
    If EventwParam() = #HotKeyID ; Si on a appuyé sur la touche #HotKeyID qui correpond ici à "Alt + A"
      
      SetGadgetText(1, "Touche appuyée") ; On change le texte
      
      ; On met la fenêtre au premier plan
      SetWindowPos_(WindowID(0), -1, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE)
      SetWindowPos_(WindowID(0), 0, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE)
      
      ; ShowWindow_(WindowID(0), #SW_SHOWNORMAL | #SW_RESTORE) ; Marche pas
      ; BringWindowToTop_(WindowID(0)) ; Marche pas
      
    EndIf
  EndIf
  
Until Event = #WM_CLOSE

UnregisterHotKey_(WindowID(0), #HotKeyID)
Je pense qu'il y a mieux à faire, notamment avec BringWindowToTop_() ou ShowWindow_() mais ça ne marche pas :(
c'est moi qui suit nul ou bien ?
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Invité

voici une solution

Message par Invité »

le plus simple que j'ai trouvé c de faire comme cela
SetWindowPos_(WindowID(), -1, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE)

puis si tu ne la veux plus en 1er plan
SetWindowPos_(WindowID(), 1, 300, 300, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE)
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

C'est exactement ce que j'ai fait et ce que je trouve pas génial.
Tu as lu mon messgae :roll:

Hein alors, et puis tu es qui toi, hein, parce que moi, le "invité" :lol: :mrgreen:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Fred
Site Admin
Messages : 2652
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

cool

ça donne ça : (ça fait beaucoup de ça, ça, non :mrgreen: )

Code : Tout sélectionner

OpenWindow(0, 0, 0, 200, 200, #PB_Window_ScreenCentered, "Test")

If CreateGadgetList(WindowID())
  TextGadget(1, 5, 5, 150, 15, "")
EndIf

#HotKeyID = 45

; On associe un touche au programme
; Ici la touche "Alt + A"
RegisterHotKey_(WindowID(0), #HotKeyID, #MOD_ALT, #PB_Shortcut_A)

Repeat
  Event = WaitWindowEvent()
  
  If Event = #WM_HOTKEY ; Si on appui sur une touche de raccourci
    If EventwParam() = #HotKeyID ; Si on a appuyé sur la touche #HotKeyID qui correpond ici à "Alt + A"
      
      SetGadgetText(1, "Touche appuyée") ; On change le texte
      
      ; On met la fenêtre au premier plan
      SetForegroundWindow_(WindowID(0))
      
    EndIf
  EndIf
  
Until Event = #WM_CLOSE

UnregisterHotKey_(WindowID(0), #HotKeyID)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Syszz
Messages : 9
Inscription : lun. 23/févr./2004 15:44

l'invité c moi

Message par Syszz »

Le Soldat Inconnu a écrit :C'est exactement ce que j'ai fait et ce que je trouve pas génial.
Tu as lu mon messgae :roll:

Hein alors, et puis tu es qui toi, hein, parce que moi, le "invité" :lol: :mrgreen:
lol l'invité c moi :wink:
j'avais pas lu tes codes asser loin mais plus lu les miens car j'avais déja fait cela dans une des mes applications

oui j'ai fait une gaffe car j'ai ecrie le message sans avoir fait connexion avant car je suis un new depuis hier :lol:
j'ai pas l'habitude de répondre dans les forums :roll:
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

C'est pas grave, ici, on est la pour s'entraider mais tu verras également qu'on aime bien rigoler :mrgreen:
Bienvenue sur le forum.
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Syszz
Messages : 9
Inscription : lun. 23/févr./2004 15:44

Message par Syszz »

Merci Beaucoup Soldat Inconnu :)
Répondre