bon voici une méthode pour faire un Spash Screen qui bloc la souris dans l'ecran Graphique pendant 5 secondes !!
j'utilise les Timers, en API donc il te faut la version complete de PureBasic !
un timer pour compter les 5 secondes
et un autre timer pour forcer la souris dans l'ecran
parceque en mode Graphique si la souris n'est pas libéré , on perd la possibilité d'utiliser les Timers, qui eux marche en mode "Gadget"

c'est une bidouille, mais ça marche bien !!

ps ; je n'ai pas caché le curseur de souris pour que tu vois ce qui se passe
si tu essai de sortir de l'ecran graphique
; exemple de Slash Screen ! by Dobro
InitMouse ()
InitKeyboard ()
InitJoystick ()
declare TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
global sec=5
Enumeration
#fenetre
#Police
EndEnumeration
; ***********************************
Resultat = InitSprite ()
FontID = LoadFont ( #Police , "arial" , 18, #PB_Font_Bold )
OpenWindow ( #fenetre , 0, 0,640,400, "hello" , #PB_Window_SystemMenu|#PB_Window_BorderLess |#PB_Window_ScreenCentered )
WindowID = WindowID ( #fenetre )
Result = OpenWindowedScreen ( WindowID ( #fenetre ) ,0,0, 640, 400, 1, 0,0)
EcranX = GetSystemMetrics_ ( #SM_CXSCREEN ): ;=largeur de l'ecran
EcranY = GetSystemMetrics_ ( #SM_CYSCREEN ): ;=hauteur de l'ecran
SetTimer_ ( WindowID ,1, 1000, @TimerProc()) ; envoie un evenement toutes les 1000 millisecondes
SetTimer_ ( WindowID ,2, 10, @TimerProc()) ; envoie un evenement toutes les 10 millisecondes
Repeat
ExamineMouse ()
ReleaseMouse (1) ;libere la souris
If MouseButton (2) ; on quit si bouton gauche
KillTimer_ ( WindowID ,1) ; on vire le timer
CloseWindow ( #fenetre ) ; <----------- et voila on quitte !!
end
EndIf
StartDrawing ( ScreenOutput ())
DrawText (10, 20, "veuillez patientez " +str(sec)+ " secondes" ,rgb(255,255,0),rgb(0,0,0))
StopDrawing ()
FlipBuffers (): ; affiche l'ecran
; ClearScreen(RGB(0, 0, 0)) :;efface l'ecran
waitWindowEvent(1)
Until Event= #PB_Event_CloseWindow
Procedure TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
shared sec
Select uMsg
Case #WM_TIMER
Select idEvent
Case 1 ; chaque seconde
sec=sec-1
if sec=0
KillTimer_ (hwnd.l,1) ; on vire le timer
KillTimer_ (hwnd.l,2) ; on vire le timer
CloseWindow ( #fenetre ) ; <----------- et voila on quitte !!
end
endif
case 2 ; chaque 10 millisecondes
ReleaseMouse (0) ; libere la souris pour le timer !!!
EndSelect
EndSelect
EndProcedure