Base avec switch mode fenetre et plein ecran

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Base avec switch mode fenetre et plein ecran

Message par Cool Dji »

Hello,

Je programme un clone de power-point, prezzi en mode 3D.
Il y aura un editeur en mode fenetré et un viewer en mode plein ecran en 3D.
Pour cela, j'ai testé le mode fenetré que je n'utilisais jamais.
J'avais besoin de pouvoir passer de l'éditeur au viewer rapidement.
Pour cela, j'ai créé un screen dans un fenetre qui apparait avec "Espace" et qui se masque avec "Esc".

La procédure Player() ne s'active que lorsque le viewer en mode plein ecran est activé...

Code : Tout sélectionner

;   Base pour une application avec un mode normal et un mode plein écran
; et facilité de passer de l'un à l'autre avec les touches "Space" et "Esc"
; Cool Dji, janvier 2017

WD=ExamineDesktops() 
Global WHeight=DesktopHeight(0)
Global WWidth=DesktopWidth(0)
Global Sortie,mode,vix

InitKeyboard()
InitSprite()

Declare PlayScreen()
Declare InitScreen()

; Ouvre la fenetre principale
OpenWindow(0, 0, 0,WWidth,WHeight,  "Présentation",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget |#PB_Window_SizeGadget      | #PB_Window_ScreenCentered)

; Ouvre une fenetre secondaire, dépendante de la principale
OpenWindow(1, 10, 10,WWidth/2,WHeight/2,  "Slide",#PB_Window_Tool ,WindowID(0))
StickyWindow(1,1) ; cette seconde fenetre est toujours devant

; Ouvre une autre fenetre secondaire, dépendante de la principale qui sera en plein écran avec un windowedScreen
OpenWindow(2, 0, 0,WWidth,WHeight,  "Projet", #PB_Window_BorderLess ,WindowID(0))
OpenWindowedScreen(WindowID(2), 0, 0, WWidth,WHeight,#False, 0, 0)
InitScreen()
StickyWindow(2,1)
HideWindow(2,#True)   ; Masque la fenetre plein ecran


 ;Raccourcis clavier
  AddKeyboardShortcut(0, #PB_Shortcut_Space, 1)

 ;Menu
  If CreateMenu(0, WindowID(0))
    MenuTitle("Projet")
        MenuItem(1, "Projection"+Chr(9)+"Space")
EndIf

  
  ;--- MAIN LOOP
   Repeat

      
     Event = WindowEvent()
    
    Select Event
 
      Case #PB_Event_Menu
        Select EventMenu()
          Case 1 :
            
         If Mode=0
           Mode=1
           HideWindow(2,#False)

          Else
            Mode=0
           HideWindow(2,#True)
          EndIf
            
          
        EndSelect
        
    EndSelect
    
; quand on est en mode plein ecran
     If mode=1:PlayScreen():EndIf
     
     Until Event = #PB_Event_CloseWindow Or Sortie=1  

     
     End
     
Procedure PlayScreen()
 ExamineKeyboard()

       ClearScreen(RGB(140,173,196))
       
        DisplaySprite(0,vix,5)
        FlipBuffers()
        vix+5
        If vix>WWidth:vix=-31:EndIf
        
                    If KeyboardPushed(#PB_Key_Escape)   :;quitte le mode plein ecran
                      Mode=0
                       HideWindow(2,#True)
               EndIf 
EndProcedure
     
     
Procedure InitScreen()
CreateSprite(0,32,32)
EndProcedure
         
Only PureBasic makes it possible