Rendre une fenetre modale, comme monsieur VB[Résolu]

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Rendre une fenetre modale, comme monsieur VB[Résolu]

Message 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. :oops:
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é :oops:

Comment fait on pour rendre une fenetre modale ?

Merci de votre aide
Bonne journée
Dernière modification par Kwai chang caine le jeu. 03/mai/2007 13:06, modifié 3 fois.
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Recherche SetWindowTool ou SetToolWindow ou Window AND Tool
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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 :D

En tout cas merci de ton aide
minirop
Messages : 321
Inscription : mer. 02/août/2006 21:06

Message 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
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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é. :wink:
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 :roll:

Autrement j'ai trouvé entretemps dans mes archives ça:

Code : Tout sélectionner

SetWindowPos_(WindowID(#XXX), -1, 0, 0, 0, 0, #SWP_NOSIZE)
ç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
minirop
Messages : 321
Inscription : mer. 02/août/2006 21:06

Message 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
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Bon bah d'accord. :(
Restons pour l'instant sur ton idée.

Merci
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Personne d'autre a une petite idée ?????
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message 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 
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Bonjour Progi1984

Je te remercie de te pencher à nouveau sur mon probleme :wink:

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. :cry:

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 8O

Donc on peux dire qu'elle est pas si modale que ça, la modale :D

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 8O
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

tiens et ça ? ca te vas ? :D


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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 !! :)
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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é. :wink:
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 :cry:

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) :lol: (Blague de musicien) :wink:
Si bilou dis qu'on peux plus, c'est qu'on peux plus :cry:

Merci de ton aide
Stefou
Messages : 234
Inscription : jeu. 18/janv./2007 14:08

Message par Stefou »

C'est quoi une fenetre "modale" :?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Stefou a écrit :C'est quoi une fenetre "modale" :?
http://fr.wikipedia.org/wiki/Fen%C3%AAtre_modale
Répondre