Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Referenz - SCREENPTR

Referenz-Navigation

 

Syntax: SCREENPTR
Typ: Funktion
Kategorie: Grafik

SCREENPTR gibt einen BefehlsreferenzeintragPointer zurück, der auf den Datenbereich (Video-RAM oder Framebuffer, siehe Hinweis unten) der aktiven Bildschirmseite zeigt, oder null, wenn kein Grafikmodus aktiv ist.
SCREENPTR kann dazu verwendet werden, um zu testen, ob ein BefehlsreferenzeintragSCREENRES-Aufruf erfolgreich war, oder um den Videospeicher direkt zu lesen oder zu beschreiben - vorausgesetzt, die Seite wurde zuvor mit BefehlsreferenzeintragSCREENLOCK gesperrt und wird nach dem Speicherzugriff mit BefehlsreferenzeintragSCREENUNLOCK entsperrt.

Um auf die Pixel im Bildschirmpuffer zuzugreifen, müssen die Bildschirmbreite, -höhe, Bytes pro Pixel und Bytes pro Zeile (Pitch) bekannt sein. Diese Informationen können mithilfe von BefehlsreferenzeintragSCREENINFO ermittelt werden.

Der von SCREENPTR zurückgelieferte Pointer ist nur nach einem erfolgreichen SCREENRES-Aufruf gültig und verliert seine Gültigkeit nach jedem weiteren SCREENRES-Aufruf.

Beispiel:

' Bildschirmmodus 320x200x8bpp setzen
' Keine Angaben zu Bildschirmseiten => nur eine aktive Seite = sichtbare Seite
SCREENRES 320, 200

' In 8bpp Modi brauchen Sie einen BYTE PTR für den Speicherzugriff.
DIM framebuffer AS BYTE PTR
framebuffer = SCREENPTR

' Die aktive Seite muss zuerst gesperrt werden, damit ein Zugriff möglich wird.
SCREENLOCK

' Zeichne einen weißen Pixel an den Koordinaten 160, 100
POKE BYTE, framebuffer + (100 * 320) + 160, 15

' Seite entsperren, damit die Änderungen sichtbar werden
SCREENUNLOCK
SLEEP

Hinweis:
Da FreeBASICs Gfxlib intern immer zwei Seiten vorhält (BefehlsreferenzeintragDouble Buffering), zeigt SCREENPTR immer auf die zweite Seite, die im Hintergrund zur Bearbeitung bereitliegt. Die vordere Seite dient nur der Anzeige. Dies hat bei der Verwendung allerdings keine Bedeutung, da FreeBASIC automatisch zwischen diesen zwei Seiten wechselt.

Unterschiede zu QB: neu in FreeBASIC

Unterschiede unter den FB-Dialektformen:
In der Dialektform Befehlsreferenzeintrag-lang qb steht SCREENPTR nicht zur Verfügung und kann nur über __SCREENPTR aufgerufen werden.

Siehe auch:
BefehlsreferenzeintragSCREENRES, BefehlsreferenzeintragSCREENLOCK, BefehlsreferenzeintragGrafik


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 31.07.2007 von Redakteurnemored angelegt.
  • Die aktuellste Version wurde am 21.12.2012 von Redakteurnemored gespeichert.
  Versionen Versionen