Mettre une fentre invisible en plein ecran ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
olivier
Messages : 305
Inscription : mer. 05/janv./2005 12:58
Localisation : http://www.tib-net.com/meca/index.htm

Mettre une fentre invisible en plein ecran ?

Message par olivier »

Salut à tous 8)

Voila lorsque mon programme démarre, il lance une petit fenetre d'intro, se qui me permet de bien calculer ma fenetre suivante avant l'affichage.

Ce code marche bien avec les dimension de la fenetre prévu, mais quand je veux que la fenetre démarre en plein ecran elle devient visible trop tôt.. :?

Merci d'avance
Stef

Code : Tout sélectionner

plein_ecran=0 ; avec 0 cela marche bien, la fenetre invisible le reste le temps prévu
; avec 1 : pour mettre la fenetre en plein ecran, la fenetre apparet trop tôt !


OpenWindow(0,0,0,400,300,#PB_Window_BorderLess|#PB_Window_ScreenCentered,"Intro")

OpenWindow(1, 284, 247, 800, 600,  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_Invisible | #PB_Window_TitleBar | #PB_Window_ScreenCentered , "Programme")


If plein_ecran=1
    SendMessage_(WindowID(1),#WM_SYSCOMMAND,#SC_MAXIMIZE,0)
EndIf

Delay(1000)
CloseWindow(0)
HideWindow(1,0)
Repeat
    event=WaitWindowEvent()
    If EventWindow()=1
        If event=#WM_CLOSE
            Quit=1
        EndIf
    EndIf
    
Until Quit=1
Vive le temps libre !
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

t'on delay(1000) est mal placé !!! :lol: :lol:

Code : Tout sélectionner

plein_ecran=0 ; avec 0 cela marche bien, la fenetre invisible le reste le temps prévu
; avec 1 : pour mettre la fenetre en plein ecran, la fenetre apparet trop tôt !


OpenWindow(0,0,0,400,300,#PB_Window_BorderLess|#PB_Window_ScreenCentered,"Intro")

OpenWindow(1, 284, 247, 800, 600,  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_Invisible | #PB_Window_TitleBar | #PB_Window_ScreenCentered , "Programme")

Delay(1000)
If plein_ecran=1
    SendMessage_(WindowID(1),#WM_SYSCOMMAND,#SC_MAXIMIZE,0)
EndIf


CloseWindow(0)
HideWindow(1,0)
Repeat
    event=WaitWindowEvent()
    If EventWindow()=1
        If event=#WM_CLOSE
            Quit=1
        EndIf
    EndIf
    
Until Quit=1 
olivier
Messages : 305
Inscription : mer. 05/janv./2005 12:58
Localisation : http://www.tib-net.com/meca/index.htm

Message par olivier »

Et oui mais le problème est le recalcul de la fenetre ! J'aimerais que l'on ne pas avoir de temps de latence d'affichage, pour ce faire j'aimerais que cela se fasse en mode invisible !

Mais merci quand même Dobro
Vive le temps libre !
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

olivier a écrit :Et oui mais le problème est le recalcul de la fenetre ! J'aimerais que l'on ne pas avoir de temps de latence d'affichage,
heu j'ai rien compris en fait ! :D .. :?

je vois pas de probleme d'affichage

la petite fenetre s'affiche en premier, puis 1 seconde apres la grande s'affiche nickel dans les deux cas de figure (0 ou 1).... 8O
olivier
Messages : 305
Inscription : mer. 05/janv./2005 12:58
Localisation : http://www.tib-net.com/meca/index.htm

Message par olivier »

Pour le problème de recalcul de la fênetre, il faut imaginer une fenetre avec plein de gadget, d'image à redimenssionner....

Sinon, moi quand je met plein_ecran=1, je ne voie pas la petite fenetre pendant 1 s !

Confirmes tu le fait de la voir ? (Avec Delay(1000) apres le maximize)

Merci Dobro pour le temps passé.
Vive le temps libre !
Good07
Messages : 308
Inscription : ven. 23/avr./2004 18:08
Localisation : Hérault 34190 Laroque

Message par Good07 »

Je confirme après test, dans les deux cas la petite fenêtre s'affiche puis une seconde après l'autre.
Dans les deux cas le résultat est identique.
Peut-être un problème de carte graphique chez toi ?
olivier
Messages : 305
Inscription : mer. 05/janv./2005 12:58
Localisation : http://www.tib-net.com/meca/index.htm

Message par olivier »

Vous êtes entrain de me dire que lorsque vous lancez le code ci dessous, la fenetre reste invisible...... ou l'on s'est mal compris ?

Code : Tout sélectionner

OpenWindow(1, 284, 247, 800, 600,  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_Invisible | #PB_Window_TitleBar | #PB_Window_ScreenCentered , "Programme")

SendMessage_(WindowID(1),#WM_SYSCOMMAND,#SC_MAXIMIZE,0)


;HideWindow(1,0)
Repeat
  event=WaitWindowEvent()
  If EventWindow()=1
    If event=#WM_CLOSE
      Quit=1
    EndIf
  EndIf
  
Until Quit=1 
Vive le temps libre !
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Windows 98 se, la fenetre s'affiche.

essaye ca:

Code : Tout sélectionner

OpenWindow(1, 284, 247, 800, 600,  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_Invisible | #PB_Window_TitleBar | #PB_Window_ScreenCentered , "Programme")

ExamineDesktops()
ResizeWindow(1, 0, 0, DesktopWidth(0), DesktopHeight(0))
;SendMessage_(WindowID(1),#WM_SYSCOMMAND, #SC_MAXIMIZE,0)


HideWindow(1,0)
Repeat
  event=WaitWindowEvent()
  If EventWindow()=1
    If event=#WM_CLOSE
      Quit=1
    EndIf
  EndIf
 
Until Quit=1
Dri
Good07
Messages : 308
Inscription : ven. 23/avr./2004 18:08
Localisation : Hérault 34190 Laroque

Message par Good07 »

Pas très clair ton histoire. :(

Bon pour récapituler:
Dans ton premier programme on voit une petite fenêtre qui s'affiche pendant une seconde. Ensuite elle est cachée par une autre fenêtre qui s'ouvre en plein écran.
Dans ton deuxième programme il affiche une fenêtre en plein écran. Le fait de décommenter la ligne ;HideWindow(1,0) ne change rien.
Idem pour le programme de Dri j'ai une fenêtre qui s'affiche en plein écran.
C'est tout...
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Dans mon code j'affiche la fenetre, enleve le hidewindow et elle n'apparait plus.

Dri ;)
olivier
Messages : 305
Inscription : mer. 05/janv./2005 12:58
Localisation : http://www.tib-net.com/meca/index.htm

Message par olivier »

Merci Dr.Dri......Mais...

J'avais bien pensé à cela, mais la fenetre ne réaggit pas correctement au évènement de la barre windows !
Je sais je suis chian, mais ....sans difficulté pas de gloire :)
Vive le temps libre !
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

et ca ?

Code : Tout sélectionner

OpenWindow(1, 284, 247, 800, 600,  #WS_MAXIMIZE | #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_Invisible | #PB_Window_TitleBar | #PB_Window_ScreenCentered , "Programme")

;ExamineDesktops()
;ResizeWindow(1, 0, 0, DesktopWidth(0), DesktopHeight(0))
;SendMessage_(WindowID(1),#WM_SYSCOMMAND, #SC_MAXIMIZE,0)


HideWindow(1,0)
Repeat
  event=WaitWindowEvent()
  If EventWindow()=1
    If event=#WM_CLOSE
      Quit=1
    EndIf
  EndIf
 
Until Quit=1
Dri :?:
olivier
Messages : 305
Inscription : mer. 05/janv./2005 12:58
Localisation : http://www.tib-net.com/meca/index.htm

Message par olivier »

He bien non !

C'est sur cela marche, mais voilà, pour redimenssioner mes gadget j'utilise une petit procedure automatique :
Elle liste tous les gadget avec leur taille, dans la taille de fenetre défini. Et elle réadapte les gadget suivant la nouvelle valeur de la taille de la fenetre.

Bien sur je pourrais tout changer mais elle me simplifie énormément la vie, et j'aimerais la garder. Je l'avais posté dans truc et astuce, je la remet là :

Code : Tout sélectionner

.Enumeration 
     #gadget
     
EndEnumeration

Procedure sauve_taille_gadget(id_window)
     
     Structure gadget
          id.l
          x.l
          y.l
          l.l
          h.l
     EndStructure
     
     Global Rectangle_affichage.RECT
     
     Global Dim gadget.gadget(1)
     nb_gadget=0
     For num_gadget=0 To #PB_Compiler_EnumerationValue 
          If IsGadget(num_gadget)
               nb_gadget=nb_gadget+1
               Redim gadget.gadget(nb_gadget)
               gadget(nb_gadget)\id=num_gadget
               gadget(nb_gadget)\x=GadgetX(num_gadget)
               gadget(nb_gadget)\y=GadgetY(num_gadget)
               gadget(nb_gadget)\h=GadgetHeight(num_gadget)
               gadget(nb_gadget)\l=GadgetWidth(num_gadget)
          EndIf
          
     Next
     gadget(0)\id=nb_gadget
     gadget(0)\h=WindowHeight(id_window)
     gadget(0)\l=WindowWidth(id_window)
     
     Rectangle_affichage\left = 0
     Rectangle_affichage\top = 0
     Rectangle_affichage\right = WindowHeight(id_window)
     Rectangle_affichage\bottom =WindowWidth(id_window)
EndProcedure


Procedure resize_gadget(id_window)
     ; rajouter dans le programme
     ;Case #PB_Event_SizeWindow  
     ;    resize_gadget(#Fenetre_base)
     hw=gadget(0)\h
     lw=gadget(0)\l
     nhw=WindowHeight(id_window)
     nlw=WindowWidth(id_window)
     For num_gadget=1 To gadget(0)\id
          If IsGadget(gadget(num_gadget)\id)
               nx=gadget(num_gadget)\x*nlw/lw
               ny=gadget(num_gadget)\y*nhw/hw
               nh=gadget(num_gadget)\h*nhw/hw
               nl=gadget(num_gadget)\l*nlw/lw
               
               ResizeGadget(gadget(num_gadget)\id,nx,ny,nl,nh) 
          EndIf
          
     Next
     Rectangle_affichage\left = 0
     Rectangle_affichage\top = 0
     Rectangle_affichage\right = nhw
     Rectangle_affichage\bottom = nlw
     InvalidateRect_(WindowID(id_window), @Rectangle_affichage, #True) 
EndProcedure


OpenWindow(1, 284, 247, 800, 600,   #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered , "Programme")
CreateGadgetList(WindowID(1))
StringGadget(#gadget,10,10,200,20,"")
sauve_taille_gadget(1)
;ExamineDesktops()
;ResizeWindow(1, 0, 0, DesktopWidth(0), DesktopHeight(0))
;SendMessage_(WindowID(1),#WM_SYSCOMMAND, #SC_MAXIMIZE,0)


;HideWindow(1,0)
Repeat
     event=WaitWindowEvent()
     If EventWindow()=1
          If event=#WM_CLOSE
               Quit=1
          EndIf
          If event=#PB_Event_SizeWindow
               Debug "resize"
               resize_gadget(1)
          EndIf
          
     EndIf
     
Until Quit=1
Vive le temps libre !
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

je comprend pas vraiment. peut-être que si tu détailles exactement ce que tu veux faire on pourra t'aider. Le problème que j'avais constaté c'est que la fenêtre perdait son invisiblité avec un évennement maximize (avec mon windows 98 )

Maintenant ce que j'ai cherché à résoudre c'est ca et rien d'autre ^^

Dri
olivier
Messages : 305
Inscription : mer. 05/janv./2005 12:58
Localisation : http://www.tib-net.com/meca/index.htm

Message par olivier »

Et je t'en remercie car c'est exactement le problème. Mais il faut que dans un premier temps la fenetre s'ouvre en 800 par 600, pour que je puisse récupérer la taille des gadgets.

Donc le problème est bien de mettre la fenetre en plein ecran en mode invisible mais sans mettre #WS_MAXIMIZE dans openwindow.

:mad: Ah fait ch... le gamin :evil:

Merci à toi pour le temps passé. :)
Vive le temps libre !
Répondre