Si tu peux faire une vérif visuelle (c'est F12 pour changer de mode).
Code : Tout sélectionner
;______________________________________________________
; /!\ Attention, a priori, ca vous envoie dans le noir.
;______________________________________________________
Global.I ScreenWindow
Global.I ScreenUID
Global.I ScreenSysBar
Global.I ScreenMode
Procedure DoUntil(Window.I,
Event.I,
*StandBy = 0,
DelayDuration.I = 16)
Repeat
Delay(DelayDuration)
If *StandBy
CallFunctionFast(*StandBy)
EndIf
If WindowEvent() = Event
If EventWindow() = Window
Break
EndIf
EndIf
ForEver
EndProcedure
Procedure FullScreen(ScreenTitle.S,
ScreenFlipMode.I = #PB_Screen_WaitSynchronization)
ExamineDesktops()
ScreenUID = OpenScreen(DesktopWidth(0),
DesktopHeight(0),
DesktopDepth(0),
ScreenTitle,
ScreenFlipMode,
DesktopFrequency(0) )
ScreenSysBar = 0
EndProcedure
Procedure WindowedScreen(ScreenTitle.S,
ScreenFlipMode.I = #PB_Screen_WaitSynchronization,
LocalScreenSysBar.I = 1,
ScreenWindowFlags.I = #PB_Window_BorderLess)
Protected.I Width
Protected.I Height
Protected.I AutoResize
Protected.I WindowWidth
Protected.I WindowHeight
ScreenSysBar = LocalScreenSysBar
ExamineDesktops()
If (ScreenWindowFlags & #PB_Window_SizeGadget)
ScreenWindowFlags | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget
AutoResize = LocalScreenSysBar
Width = DesktopWidth(0) / 2
Height = DesktopHeight(0) / 2
ScreenWidth = DesktopWidth(0)
ScreenHeight = DesktopHeight(0)
Else
Width = DesktopWidth(0)
Height = DesktopHeight(0) - ScreenSysBar
EndIf
ScreenWindow = OpenWindow(#PB_Any,
0,
0,
Width,
Height,
ScreenTitle,
ScreenWindowFlags)
If Not (ScreenWindowFlags & #PB_Window_SizeGadget)
ScreenWidth = WindowWidth(ScreenWindow)
ScreenHeight = WindowHeight(ScreenWindow)
EndIf
If ScreenWindow
ScreenUID = OpenWindowedScreen(WindowID(ScreenWindow),
0,
0,
ScreenWidth,
ScreenHeight,
AutoResize,
0,
0,
ScreenFlipMode)
WaitWindowEvent()
EndIf
EndProcedure
Procedure Screen(Mode.I,
ScreenTitle.S,
ScreenFlipMode.I = #PB_Screen_WaitSynchronization)
ScreenMode = Mode
If ScreenUID
CloseScreen()
If ScreenWindow
CloseWindow(ScreenWindow)
EndIf
ScreenUID = 0
ScreenWindow = 0
EndIf
Select Mode
Case 0
ProcedureReturn FullScreen(ScreenTitle,
ScreenFlipMode)
Case 1
ProcedureReturn WindowedScreen(ScreenTitle,
ScreenFlipMode,
0)
Case 2
ProcedureReturn WindowedScreen(ScreenTitle,
ScreenFlipMode,
1)
Case 3
ProcedureReturn WindowedScreen(ScreenTitle,
ScreenFlipMode,
0,
#PB_Window_Maximize)
Case 4
ProcedureReturn WindowedScreen(ScreenTitle,
ScreenFlipMode,
0,
#PB_Window_SizeGadget)
Case 5
ProcedureReturn WindowedScreen(ScreenTitle,
ScreenFlipMode,
1,
#PB_Window_SizeGadget)
EndSelect
EndProcedure
Procedure ScreenResume(ScreenTitle.S,
ScreenFlipMode.I = #PB_Screen_WaitSynchronization,
*StandBy = 0,
DelayDuration.I = 16)
Protected BackgroundWindow.I
If ScreenWindow
Repeat
Delay(DelayDuration)
If *StandBy
CallFunctionFast(*StandBy)
EndIf
Until WindowEvent() = #PB_Event_ActivateWindow
Else
CloseScreen()
BackgroundWindow = OpenWindow(#PB_Any,
0,
0,
0,
0,
ScreenTitle,
#PB_Window_BorderLess |
#PB_Window_NoActivate)
DoUntil(BackgroundWindow, #PB_Event_ActivateWindow, *StandBy, DelayDuration)
CloseWindow(BackgroundWindow)
FullScreen(ScreenTitle, ScreenFlipMode)
EndIf
EndProcedure
Procedure SpriteInit()
Dim A$(5)
A$(5) = "Plein écran"
A$(4) = "Graphique adapté à la fenêtre"
A$(3) = "Redimensionnable"
A$(2) = "Barre de titre"
A$(1) = "Fenêtré"
A$(0) = "Barre des tâches"
B$ = "32;34;35;38;15;31"
For I = 0 To 5
If IsImage(I + 1) = 0
StartDrawing(ScreenOutput() )
DrawingFont(FontID(0) )
TW = TextWidth("* " + A$(I) )
TH = TextHeight(A$(I) )
CreateImage(I + 1, TW, TH)
StopDrawing()
If StartDrawing(ImageOutput(I + 1) )
DrawingFont(FontID(0) )
W = OutputWidth()
H = OutputHeight()
DrawText(0, 0, "* " + A$(I), RGB(0, 255, 255), RGB(0, 127, 127) )
StopDrawing()
EndIf
EndIf
If IsImage(I + 7) = 0
A$ = "MODE ECRAN " + Str(I)
StartDrawing(ScreenOutput() )
DrawingFont(FontID(0) )
TW = TextWidth(A$)
TH = TextHeight(A$)
CreateImage(I + 7, TW, TH)
StopDrawing()
If StartDrawing(ImageOutput(I + 7) )
DrawingFont(FontID(0) )
W = OutputWidth()
H = OutputHeight()
DrawText(0, 0, A$, RGB(0, 127, 127), RGB(0, 255, 255) )
StopDrawing()
EndIf
EndIf
Next
CreateSprite(0, ScreenWidth(), ScreenHeight() )
If StartDrawing(SpriteOutput(0) )
W = OutputWidth()
H = OutputHeight()
X = W / 4
Y = H / 4
n = Val(StringField(B$, ScreenMode + 1, ";") )
DrawImage(ImageID(ScreenMode + 7), X, Y)
Y + ImageHeight(ScreenMode + 7)
For J = 0 To 5
If (n & (1 << J) )
DrawImage(ImageID(J + 1), X, Y)
Y + ImageHeight(J + 1)
EndIf
Next
StopDrawing()
EndIf
EndProcedure
InitSprite()
Screen(0, "Test")
InitKeyboard()
InitMouse()
LoadFont(0, "courier", 32, #PB_Font_Bold)
SpriteInit()
Repeat
ClearScreen(0)
DisplaySprite(0, 0, 0)
Delay(16)
FlipBuffers()
If IsScreenActive() = 0
ScreenResume("TEST")
EndIf
If ScreenWindow
ScreenEvent = WindowEvent()
If ScreenEvent = #PB_Event_CloseWindow
Break
EndIf
EndIf
ExamineKeyboard()
If KeyboardReleased(#PB_Key_F12)
Mode + 1
Mode % 6
Screen(Mode, "Test")
SpriteInit()
EndIf
Until KeyboardPushed(#PB_Key_Escape)
End