OpenWindowedScreen()
Syntaxe
Resultat = OpenWindowedScreen(FenetreID, x, y, Largeur, Hauteur [, RedimensionnementAuto, OffsetDroit, OffsetBas [, FlipMode]])Description
Ouvre un écran selon les paramètres spécifiés dans la fenêtre dont l'identifiant est 'FenetreID'. Cette fenêtre doit être ouverte au préalable en utilisant OpenWindow().
L'écran fenêtré emploie l'accélération matérielle de la même manière que le mode plein écran utilisant la commande OpenScreen().
Si 'RedimensionnementAuto' est #True, alors l'écran se redimensionnera automatiquement ainsi que son contenu quand la taille de la fenêtre changera.
'OffsetDroit' et 'OffsetBas' définissent les marges à droite et en bas de la fenêtre qui devront être respectées lors du redimensionnement (pour une barre d'état par exemple).
Le paramètre 'FlipMode' est facultatif et permet d'attendre ou non la synchronisation avec l'écran avant d'inverser les buffers avec FlipBuffers() (aussi connu sous le nom de 'Vertical blank synchronization'). Les valeurs possibles du paramètre 'Flipmode' sont:#PB_Screen_NoSynchronization : désactive la synchronisation #PB_Screen_WaitSynchronization : active la synchronisation (mode par défaut) #PB_Screen_SmartSynchronization: active la synchronisation en essayant de préserver le temps processeur, lorsque le jeu est en mode plein écran.Attendre la synchronisation permet d'avoir des inversions de buffers parfaites (sans 'tearing' (ancienne et nouvelle image à moitié visible) ou autres effets parasites) car l'inversion est effectuée lorsque que le faisceau lumineux est en dehors de la partie visible de l'écran. De plus, l'inversion se fait à un rythme régulier, en relation avec sa fréquence de rafraîchissement: par exemple, pour un écran en 60 Hz, l'inversion pourra se faire au maximum 60 fois par seconde (donc on aura un rythme régulier de 60 images/secondes).
L'écran est créé avec deux buffers vidéo, ce qui permet l'affichage successif des deux buffers avec la fonction FlipBuffers(), particulièrement utile pour les jeux.
Si Resultat = 0, la création de l'écran a échoué.
Note: Il n'est pas possible de créer plus d'un écran fenêtré à la fois.
Exemple
Example 1: Ecran fenêtré de taille fixe avec gadgetsIf InitSprite() = 0 MessageRequester("Erreur", "Impossible d'ouvrir l'écran & l'environnement nécessaire aux sprites !", 0) End EndIf If OpenWindow(0, 0, 0, 220, 160, "Un écran dans une fenêtre...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) ButtonGadget(0, 170, 135, 45, 20, "Quitter") If OpenWindowedScreen(WindowID(0), 0, 0, 160, 160) CreateSprite(0, 20, 20) If StartDrawing(SpriteOutput(0)) Box(0, 0, 20, 20, RGB(255, 0, 155)) Box(5, 5, 10, 10, RGB(155, 0, 255)) StopDrawing() EndIf Else MessageRequester("Erreur", "Impossible d'ouvrir un écran dans la fenêtre!", 0) End EndIf EndIf direction = 2 Repeat ; Il est très important de traiter tous les événements restants dans la file d'attente à chaque tour ; Repeat Event = WindowEvent() Select Event Case #PB_Event_Gadget If EventGadget() = 0 End EndIf Case #PB_Event_CloseWindow End EndSelect Until Event = 0 FlipBuffers() ClearScreen(RGB(0, 0, 0)) DisplaySprite(0, x, x) x + direction If x > 140 : direction = -2 : EndIf If x < 0 : direction = 2 : EndIf Delay(1) ForEver
Exemple
Example 2: Avec redimensionnement automatiqueIf InitSprite() = 0 MessageRequester("Erreur", "Impossible d'ouvrir l'écran & l'environnement nécessaire aux sprites !", 0) End EndIf If OpenWindow(0, 0, 0, 320, 200, "Un écran dans une fenêtre...", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_ScreenCentered) CreateStatusBar(0, WindowID(0)) AddStatusBarField(320) StatusBarText(0, 0, "Zoom automatique lors du changement de taille de la fenêtre...") If OpenWindowedScreen(WindowID(0), 0, 0,320, 200, #True, 0, 20) CreateSprite(0, 50, 50) ; Crée un sprite vide qui sera tout noir Repeat ; Il est très important de traiter tous les événements restants dans la file d'attente à chaque tour ; Repeat Event = WaitWindowEvent(10) If Event = #PB_Event_CloseWindow End EndIf Until Event = 0 FlipBuffers() ClearScreen(RGB(0, 0, 200)) ; Un fond bleu DisplaySprite(0, 10, 10) ; Affichez notre boîte noire dans le coin en haut à gauche DisplaySprite(0, 260, 10) ; Affichez notre boîte noire dans le coin en haut à droite ForEver Else MessageRequester("Erreur", "Impossible d'ouvrir l'écran fenêtré !", 0) EndIf EndIf
Pour plus de détail, voir cet exemple
Exemple
WindowedScreen.pb
OS Supportés
Tous