problème avec StickyWindow
problème avec StickyWindow
Il arrive parfois que StickyWindow ne fonctionne pas correctement; la fenêtre reste en arrière plan.
C'est assez rare mais embêtant!
J'ai vu que le soldat en parlait dans un de ses posts mais je ne le retrouve pas, il y a t' il une solution?
C'est assez rare mais embêtant!
J'ai vu que le soldat en parlait dans un de ses posts mais je ne le retrouve pas, il y a t' il une solution?
Re: problème avec StickyWindow
Bonjour nico
Ceci mes déja arrivée l'orsque j'utilise plusieurs fenêtres avec StickyWindow.
C'est un problème de priorité. J'ai résolut ce problème en jouant avec le focus des fenêtres (en fait en désactivant par le programme le focus des fenêtres inférieures)
Mais si c'est deux programmes différents, je n'ai pas de solution.
Michel
Ceci mes déja arrivée l'orsque j'utilise plusieurs fenêtres avec StickyWindow.
C'est un problème de priorité. J'ai résolut ce problème en jouant avec le focus des fenêtres (en fait en désactivant par le programme le focus des fenêtres inférieures)
Mais si c'est deux programmes différents, je n'ai pas de solution.
Michel
Re: problème avec StickyWindow
Le problème, c'est que c'est pour une fenêtre qui est caché au départ et lorsque je l'affiche je ne l'active pas donc la fenêtre n'a jamais le focus.
J'ai quand même mis un setfocus() lors de la création mais je ne sais pas si ça un sens.
J'ai quand même mis un setfocus() lors de la création mais je ne sais pas si ça un sens.
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
Re: problème avec StickyWindow
Comme ça, c'est mort. On ne peux pas utiliser stickywindow() au milieu d'un code pour passer une fenêtre en arrière plan au premier plan.
Windows sécurise l'affaire visiblement.
La seule solution que j'ai trouvé est de masquer toutes les autres fenêtres. Comme pour les alarmes de mon agenda par exemple.
je lance
pour afficher le bureau puis j'affiche ma fenêtre
sinon, il faut recréer ta fenêtre quand tu as besoin de la mettre au premier plan.
J'espère que ça va t'aider
Windows sécurise l'affaire visiblement.
La seule solution que j'ai trouvé est de masquer toutes les autres fenêtres. Comme pour les alarmes de mon agenda par exemple.
je lance
Code : Tout sélectionner
SendMessage_(FindWindow_("Shell_TrayWnd", NULL), $111, 419, 0) ; Réduire toutes les fenêtres
sinon, il faut recréer ta fenêtre quand tu as besoin de la mettre au premier plan.
J'espère que ça va t'aider
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)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Re: problème avec StickyWindow
Je vais attendre un peu et voir déjà ce que ça donne, merci.
Re: problème avec StickyWindow
Et bien moi sous Ubuntu j'ai également un problème avec StickyWindow(). En effet, lorsque la fenêtre principale est au premier plan et qu'elle est caché afin d'afficher une fenêtre secondaire lorsque le programme revient à la fenêtre principale elle ne reste plus au premier plan. C'est un brin agaçant et pour le moment, je n'ai pas trouvé de solution.
A+
Guimauve
A+
Guimauve
Re: problème avec StickyWindow
Salut nico
Regarde dans le SDK Window la fonction BringWindowToTop.
La doc que j'ai (mais qui date un peu) dit Place une fenêtre au premier plan et la superpose aux autres fnêtres se chevauchant a l'écran. S'il s'agit d'une fenêtre en incrustation au dessus des autres fenêtres de premier niveau, cela a pour effet de l'activer. (fin de citation.). En C fait partie de lib winuser.h.
Michel
Regarde dans le SDK Window la fonction BringWindowToTop.
La doc que j'ai (mais qui date un peu) dit Place une fenêtre au premier plan et la superpose aux autres fnêtres se chevauchant a l'écran. S'il s'agit d'une fenêtre en incrustation au dessus des autres fenêtres de premier niveau, cela a pour effet de l'activer. (fin de citation.). En C fait partie de lib winuser.h.
Michel
Re: problème avec StickyWindow
Ma fenêtre ne doit en aucun cas avoir le focus mais lors de sa création je peux l'afficher temporairement avec des dimensions très réduite puis la cacher.
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
Re: problème avec StickyWindow
excuse moi mais je n'ai pas compris ton besoin.
Que cherches tu à faire ?
Que cherches tu à faire ?
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)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Re: problème avec StickyWindow
Mettre une fenêtre (qui sert juste pour afficher des informations) au premier plan, elle est cachée au départ puis je l'affiche quand j'en ai besoin avec ShowWindow_(WindowID(#Window_Popup),#SW_SHOWNOACTIVATE) donc elle ne prend pas le focus en s'affichant; c'est très important.
Ce que je fais pour l'instant, je crée la fenêtre visible mais je l'affiche hors écran en y négatif, je lui donne le focus, je fais un sticky puis je la cache.
Voilà.
Ce que je fais pour l'instant, je crée la fenêtre visible mais je l'affiche hors écran en y négatif, je lui donne le focus, je fais un sticky puis je la cache.
Voilà.

Re: problème avec StickyWindow
Un début de solution
Mais si il y a 2 Sticky ça ne marche pas 


Code : Tout sélectionner
Enumeration
#fen1
#fen2
#bt1
#bt2
EndEnumeration
OpenWindow(#fen1 , 0, 0, 650, 440, "fen1",#PB_Window_BorderLess | #PB_Window_ScreenCentered|#PB_Window_SystemMenu )
;StickyWindow(#fen1 , 1)
ButtonGadget(#bt1, 30, 320,100, 20, "Apparait")
ButtonGadget(#bt2, 140, 320,100, 20, "disparait")
Repeat
Event = WaitWindowEvent()
Select EventGadget()
Case #bt1
OpenWindow(#fen2 , 0, 0, 150, 100, "fen2",#PB_Window_BorderLess | #PB_Window_ScreenCentered|#PB_Window_SystemMenu |#SW_SHOWNOACTIVATE)
StickyWindow(#fen2 , 1)
SetActiveWindow(#fen1)
Case #bt2
CloseWindow(#fen2)
EndSelect
Until event = #PB_Event_CloseWindow

Re: problème avec StickyWindow
Je ne suis pas dans cette configuration, donc pas de problème.
Par contre, j'ai remarqué que le stickywindow met au premier plan mais aussi active la fenêtre en même temps, donc je ne pense pas que setactivewindow soit utile.
Voici un code qui fonctionne même si la fenêtre mère est au premier plan:
Par contre, j'ai remarqué que le stickywindow met au premier plan mais aussi active la fenêtre en même temps, donc je ne pense pas que setactivewindow soit utile.
Voici un code qui fonctionne même si la fenêtre mère est au premier plan:
Code : Tout sélectionner
Enumeration
#fen1
#fen2
#bt1
#bt2
EndEnumeration
OpenWindow(#fen2 , 0, 0, 150, 100, "fen2",#PB_Window_BorderLess | #PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_Invisible )
OpenWindow(#fen1 , 0, 0, 650, 440, "fen1",#PB_Window_BorderLess | #PB_Window_ScreenCentered|#PB_Window_SystemMenu )
StickyWindow(#fen1 , 1)
ButtonGadget(#bt1, 30, 320,100, 20, "Apparait")
ButtonGadget(#bt2, 140, 320,100, 20, "disparait")
Repeat
Event = WaitWindowEvent()
Select EventGadget()
Case #bt1
SetWindowPos_(WindowID(#fen2),#HWND_TOPMOST,0,0,0,0,#SWP_NOACTIVATE|#SWP_NOMOVE|#SWP_NOSIZE|#SWP_SHOWWINDOW)
Case #bt2
HideWindow(#fen2,1)
EndSelect
Until event = #PB_Event_CloseWindow
Re: problème avec StickyWindow
Salut nico
C'est aussi une solution.
Ton problème est il résolut

C'est aussi une solution.
Ton problème est il résolut


-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
Re: problème avec StickyWindow
A d'accord, la solution pour moi est la suivante : il faut pas masqué la fenêtre mais la sortir de l'écran.
Car masqué une fenêtre "premier plan" en espérant qu'elle revienne au plan, ca ne fonctionne pas à tous les coups, mais alors pas du tout.
je te ferais un exemple plus tard, j'ai pas le temps la.
Prend bien le temps de faire une toolwindow, ça évitera à Windows de vouloir remettre la fenêtre la zone de l'écran alors qu'on veut la laisser en dehors.
Car masqué une fenêtre "premier plan" en espérant qu'elle revienne au plan, ca ne fonctionne pas à tous les coups, mais alors pas du tout.
je te ferais un exemple plus tard, j'ai pas le temps la.
Prend bien le temps de faire une toolwindow, ça évitera à Windows de vouloir remettre la fenêtre la zone de l'écran alors qu'on veut la laisser en dehors.
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)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Re: problème avec StickyWindow
Pourquoi.Le Soldat Inconnu a écrit : Car masqué une fenêtre "premier plan" en espérant qu'elle revienne au plan, ca ne fonctionne pas à tous les coups, mais alors pas du tout.

Ce constat je l'ai fait aussi, mais rarement. C'est pour cela que dans mon code, je redessine la fenêtre a chaque apparition.
