Page 1 sur 1
Rendre une fenetre modale, comme monsieur VB[Résolu]
Publié : mer. 02/mai/2007 14:05
par Kwai chang caine
Bonjour à tous
J'ai un trou de mémoire ou je ne sais meme pas si je l'ai déjà fait.
J'ai fait une recherche sur modal et il en ressort peau de chagrin.
C'est tellement bete comme question, que je me dit que ce doit bien etre ecrit quelque part......et j'ai rien trouvé dans l'aide non plus.
J'ai encore du lire à coté
Comment fait on pour rendre une fenetre modale ?
Merci de votre aide
Bonne journée
Publié : mer. 02/mai/2007 14:31
par Progi1984
Recherche SetWindowTool ou SetToolWindow ou Window AND Tool
Publié : mer. 02/mai/2007 15:41
par Kwai chang caine
Bonjour progi1984
J'ai fait tout comme tu m'a dit, et j'ai pas trouvé de quoi remplir un dictionnaire, avec ces mots
En tout cas merci de ton aide
Publié : mer. 02/mai/2007 16:25
par minirop
j'ai trouvé un moyen de simuler une fenêtre modale :
Code : Tout sélectionner
; début de la boucle d'écoute de la fenètre principale
DisableWindow(0,1)
If OpenWindow(1,0,0,250,100,"Options",#PB_Window_WindowCentered,0)
; blablabla dont la boucle d'écoute de cette fenêtre + createadgetlist
CloseWindow(1)
EndIf
DisableWindow(0,0)
;fin de la boucle
Publié : mer. 02/mai/2007 16:42
par Kwai chang caine
Ah oui, tu veux dire si j'ai bien compris, de rendre la fenetre principale inactive, comme ça l'autre devient modale par defaut.
C'est malin...... et j'y aurais pas pensé.
Le bleme c'est que j'ai une palenquée de fenetre et je ne sais pas toujours quelle est la fenetre qui est derriere la "Modale".
ça fait une gestion a tenir, j'aurais préféré plus simple.
Mais ton idée est bonne à retenir.
Pour une fois VB est meilleur sur ce coup la
Autrement j'ai trouvé entretemps dans mes archives ça:
ça met la fenetre au premier plan.
Je ne sais pas si c'est exactement pareil que modale ????
Si quelqu'un a mieux ou veux donner son avis.
Comme dab, je suis preneur
Publié : mer. 02/mai/2007 16:46
par minirop
Kwai chang caine a écrit :ça met la fenetre au premier plan.
Je ne sais pas si c'est exactement pareil que modale ????
non, çà a mets juste au 1er plan (la même chose que mon code sans les DisableWindow
Publié : mer. 02/mai/2007 16:51
par Kwai chang caine
Bon bah d'accord.
Restons pour l'instant sur ton idée.
Merci
Publié : jeu. 03/mai/2007 8:31
par Kwai chang caine
Personne d'autre a une petite idée ?????
Publié : jeu. 03/mai/2007 8:57
par Progi1984
Essaie ce code :
Code : Tout sélectionner
OpenWindow(0, 0, 0, 219, 85, "TEST",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
SetWindowLong_(WindowID(0),#GWL_EXSTYLE,GetWindowLong_(WindowID(0),#GWL_EXSTYLE)|#WS_EX_TOOLWINDOW)
ResizeWindow(0,#PB_Ignore,#PB_Ignore,220,100) : ShowWindow_(WindowID(0),#SW_SHOW)
Repeat
ev= WaitWindowEvent()
Until ev=#PB_Event_CloseWindow
Publié : jeu. 03/mai/2007 10:06
par Kwai chang caine
Bonjour Progi1984
Je te remercie de te pencher à nouveau sur mon probleme
J'ai éssayé ton code.
J'ai rajouté une autre fenetre pour voir si la tienne etait modale.
Et malheureusement ça ne marche pas chez moi.
Quand je clique sur la fenetre pricipale, chez bilou ça fait "ding" et tu ne peux pas lui mettre le focus.
Le focus reste toujours sur la modale.
T'es obligé de fermer la modale pour avoir acces a la principale ou les autres d'ailleurs.
Par contre dans ton code si on clique la principale, la modale disparait
Donc on peux dire qu'elle est pas si modale que ça, la modale
Code : Tout sélectionner
OpenWindow(1, 0, 0, 319, 185, "Fenetre principale",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindow(0, 0, 0, 219, 85, "Fenetre modale",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
SetWindowLong_(WindowID(0),#GWL_EXSTYLE,GetWindowLong_(WindowID(0),#GWL_EXSTYLE)|#WS_EX_TOOLWINDOW)
ResizeWindow(0,#PB_Ignore,#PB_Ignore,220,100) : ShowWindow_(WindowID(0),#SW_SHOW)
Repeat
ev = WaitWindowEvent()
Until ev = #PB_Event_CloseWindow
C'est dingue qu'une fonction aussi basique que ça en VB n'existe pas en pure

Publié : jeu. 03/mai/2007 11:51
par Backup
tiens et ça ? ca te vas ?
OpenWindow (1, 0, 0, 319, 185, "Fenetre principale" , #PB_Window_SystemMenu|#PB_Window_ScreenCentered )
OpenWindow (0, 0, 0, 219, 85, "Fenetre modale" , #PB_Window_SystemMenu|#PB_Window_ScreenCentered )
SetWindowLong_ ( WindowID (0), #GWL_EXSTYLE , GetWindowLong_ ( WindowID (0), #GWL_EXSTYLE )|#WS_EX_TOOLWINDOW)
ResizeWindow (0, #PB_Ignore , #PB_Ignore ,220,100) : ShowWindow_ ( WindowID (0), #SW_SHOW )
EnableWindow_ ( WindowID (1), 0) ; <----- voila ce qui rend modal ! : D
Repeat
ev = WaitWindowEvent ()
Until ev = #PB_Event_CloseWindow
Publié : jeu. 03/mai/2007 12:32
par Backup
j'ajouterai que d'apres l'api_doc
The SetSysModalWindow function is not implemented in the Win32 API. The new input model does not allow for System Modal windows.
donc avant il existait une fonction toute faite, mais qui n'est plus présente !!

Publié : jeu. 03/mai/2007 13:04
par Kwai chang caine
Bonjour DOBRO
J'avais ecris ça à Minirop:
Kwai chang caine a écrit :Ah oui, tu veux dire si j'ai bien compris, de rendre la fenetre principale inactive, comme ça l'autre devient modale par defaut.
C'est malin...... et j'y aurais pas pensé.
Le bleme c'est que j'ai une palenquée de fenetre et je ne sais pas toujours quelle est la fenetre qui est derriere la "Modale".
ça fait une gestion a tenir, j'aurais préféré plus simple.
Mais ton idée est bonne à retenir.
C'est un peu le meme systeme que tu as utilisé, non ??
Car en fait tout le reste ne sert à rien
Code : Tout sélectionner
OpenWindow (1, 0, 0, 319, 185, "Fenetre principale" , #PB_Window_SystemMenu|#PB_Window_ScreenCentered )
OpenWindow (0, 0, 0, 219, 85, "Fenetre modale" , #PB_Window_SystemMenu|#PB_Window_ScreenCentered )
EnableWindow_(WindowID (1), 0) ; <----- voila ce qui rend modal ! : D
Repeat
ev = WaitWindowEvent ()
Until ev = #PB_Event_CloseWindow
Ce code fait la meme chose.
Bon tanpis (Comme dirais le clavier)

(Blague de musicien)
Si bilou dis qu'on peux plus, c'est qu'on peux plus
Merci de ton aide
Publié : ven. 04/mai/2007 20:09
par Stefou
C'est quoi une fenetre "modale"

Publié : ven. 04/mai/2007 20:50
par Backup
Stefou a écrit :C'est quoi une fenetre "modale"

http://fr.wikipedia.org/wiki/Fen%C3%AAtre_modale