Dans le petit bout de code qui suit, le programme lance en plein écran sans la barre de titre de Windows, c'est voulu. Si on approche la souris du haut de l'écran, la barre de titre apparaît (ce qui permet par exemple de fermer le programme ou de le minimiser) et si on déplace la souris vers la bas, la barre de titre disparaît : c'est ce que je veux afin de pouvoir bénéficier de tout l'écran pour mes programmes de jeu.
Le problème que je rencontre, c'est que la barre de tâches, en bas, apparaît lorsque la souris redéfinie est affichée (petit carré blanc entouré de rouge), c'est à dire quand je rentre dans l'écran de jeu, et je ne voudrais pas que la barre de tâche s'affiche.
Merci de votre aide.
Code : Tout sélectionner
;================================================================================================================================
;= Programme squelette gérant la souris avec une fenêtre OpenWindow() et une fenêtre OpenWindowedScreen()
;================================================================================================================================
EnableExplicit
;---------- Constantes
#couleur_fond_ecran=$FACE87
#largeur_ecran=1366
#hauteur_ecran=768
#options_ecran=#PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_ScreenCentered
;---------- Enumérations
Enumeration
#fenetre_windows
#souris
EndEnumeration
;---------- Variables
Global event.i
Global souris_dans_ecran_de_jeu.b
Global mx.w
Global my.w
;---------- Initialisation des environnements nécessaires
If InitSprite()=0 : MessageRequester("Erreur", "InitSprite() non initialisé !"):End:EndIf
If InitMouse()=0 : MessageRequester("Erreur", "InitMouse() non initialisé !"):End:EndIf
;=---------- Création de la fenêtre Windows
OpenWindow(#fenetre_windows, 0, -26, #largeur_ecran,#hauteur_ecran, "Programme squelette - Jacques Joly (2021)",#options_ecran)
;=---------- Création de la fenêtre de jeu
OpenWindowedScreen(WindowID(#fenetre_windows),0,0,#largeur_ecran,#hauteur_ecran,1,0,0) ; le 1=redimensionnement automatique
CreateSprite(#souris,18,18)
StartDrawing(SpriteOutput(#souris))
Box(0,0,18,18,#Red)
Box(2,2,14,14,#White)
StopDrawing()
Procedure gerer_souris()
;=---------- Routine de gestion de la souris qui est soit dans l'écran de jeu, soit sur la fenêtre Windows
If souris_dans_ecran_de_jeu ; Si la souris est dans l'écran de jeu
If MouseX() > #largeur_ecran-2 Or MouseY() > #hauteur_ecran-2 Or MouseX() < 1 Or MouseY() <1 ; ...et si elle s'approche des bords de l'écran
ReleaseMouse(#True) ; ....alors on libère la souris pour la rendre à la fenêtre Windows
souris_dans_ecran_de_jeu = #False ; ... et on indique que q'elle n'est plus dans l'écran de jeu
If MouseY() <1
ResizeWindow(#fenetre_windows,#PB_Ignore,0,#PB_Ignore,#PB_Ignore)
EndIf
EndIf
Else ; Sinon, c'est qu'elle est dans l'écran Windows
mx = WindowMouseX(#fenetre_windows) ; ... on récupère les coordonnées de la souris
my = WindowMouseY(#fenetre_windows)
If mx < #largeur_ecran And mx > 0 And my > 0 And my < #hauteur_ecran ; ... et si elle entre dans l'écran de jeu
ReleaseMouse(#False) ; ... alors on capture la souris dans l'écran de jeu
MouseLocate(mx,my) ; ... on la positionne
souris_dans_ecran_de_jeu = #True ;... et on indique que la souris est dans l'écran de jeu
If my > 0
ResizeWindow(#fenetre_windows,#PB_Ignore,-26,#PB_Ignore,#PB_Ignore)
EndIf
EndIf
EndIf
;=---------- Fin de la routine de gestion de la souris (voir aussi test dans procedure "afficher_la_souris")
EndProcedure
Procedure afficher_souris()
If souris_dans_ecran_de_jeu ; Ajouté car sans ce test, la souris redéfinie par un sprite s'affiche en plus de la souris "Windows"
; quand on arrive au bord de l'écran
DisplayTransparentSprite(#souris, MouseX(),MouseY())
EndIf
EndProcedure
Repeat
Repeat
event = WindowEvent()
Select event
Case #PB_Event_CloseWindow
End
EndSelect
Until event = 0
ClearScreen(#couleur_fond_ecran)
ExamineMouse()
gerer_souris()
afficher_souris()
FlipBuffers()
Until event=#PB_Event_CloseWindow