FlipBuffers() verursacht Invalid Memory Access
- blbltheworm
- Beiträge: 217
- Registriert: 22.09.2004 19:36
- Wohnort: Auf der schönen Schwäbischen Alb
FlipBuffers() verursacht Invalid Memory Access
Hallo zusammen,
ich hab folgendes Problem:
Wenn ich von meiner Fullscreen DX-Anwendung (OpenScreen()) aus mit Alt-Tab auf den Desktop wechsle und dann wieder zurück verursacht FlipBuffers() einen Invalid Memory Access und das Programm verabschidet sich.
Was kann ich da dagegen machen??
ich hab folgendes Problem:
Wenn ich von meiner Fullscreen DX-Anwendung (OpenScreen()) aus mit Alt-Tab auf den Desktop wechsle und dann wieder zurück verursacht FlipBuffers() einen Invalid Memory Access und das Programm verabschidet sich.
Was kann ich da dagegen machen??
Eine alternativlösung wäre:
Finde den Handle des Vollbildes heraus, z. B. so:
Direkt nach OpenScreen() speicherst du in einer Variablen 'hwnd' das Handle mit dem Aufruf von GetForeGroundWindow_() (WIndows API). Dieser befehl gibt immer das Handle des Fensters zurück, das gerade aktiv ist.
Switcht der User raus, hälst du die Programmausführung solange einfach an:
Alles klar? 
Finde den Handle des Vollbildes heraus, z. B. so:
Direkt nach OpenScreen() speicherst du in einer Variablen 'hwnd' das Handle mit dem Aufruf von GetForeGroundWindow_() (WIndows API). Dieser befehl gibt immer das Handle des Fensters zurück, das gerade aktiv ist.
Switcht der User raus, hälst du die Programmausführung solange einfach an:
Code: Alles auswählen
While GetForeGroundWindow_() <> hwnd : Wend

PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Es ist ja logisch das das Programm weiterläuft, während du rausswitchst.
Während wir hier herumdoktern ein Denkanstoß: Ist es möglich, dass du ein "invalides" Ouput benutzt? Also die zeichenfläche, auf die du zeichnest, ist die irgendwie... ja halt nicht gültig, wie PB das sagt? Oder kannst du vielleicht auch mal den gesamten Code posten?
Während wir hier herumdoktern ein Denkanstoß: Ist es möglich, dass du ein "invalides" Ouput benutzt? Also die zeichenfläche, auf die du zeichnest, ist die irgendwie... ja halt nicht gültig, wie PB das sagt? Oder kannst du vielleicht auch mal den gesamten Code posten?
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
ist eigentlich komisch da dann ja auch das "IsScreenActive()" nicht gehen würde...
weil ja die ereignisse innerhalb vom "FlipBuffers()" ähnlich wie bei "WindowEvent()" bearbeitet werden.
wenn du willst, probier mal das:
weil ja die ereignisse innerhalb vom "FlipBuffers()" ähnlich wie bei "WindowEvent()" bearbeitet werden.
wenn du willst, probier mal das:
Code: Alles auswählen
FlipBuffers()
If IsScreenActive() = 0
Repeat
Delay(100)
FlipBuffers()
Until IsScreenActive()
EndIf
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
btw. um welche Version gehts eigentlich?
3.30 kann kein Alt-Tab beim Screen verarbeiten, allerdings sollten dann auch nur die sprites kaputt sein, kein ivalid mem auftreten.
wie die anderen schon sagten, mehr info über den code wären gut.
3.30 kann kein Alt-Tab beim Screen verarbeiten, allerdings sollten dann auch nur die sprites kaputt sein, kein ivalid mem auftreten.
wie die anderen schon sagten, mehr info über den code wären gut.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
@ Jilocasin: Die verschachtelte If/Repeat Schleife kannst du durch eine einfache While-Schleife ersetzen!
Und: Warum flippst du das Bild schon vor der Schleife?
Und: Warum flippst du das Bild schon vor der Schleife?
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
- blbltheworm
- Beiträge: 217
- Registriert: 22.09.2004 19:36
- Wohnort: Auf der schönen Schwäbischen Alb
Also das ganze ist in PB 4 geschrieben.
Ich hab mal den Code auf's wichtigste beschnitten und hier http://www.digital-joga.de.vu/Test.zip hochgeladen.
Wäre toll, wenn einer von euch den Fehler finden könnte und mir sagt, wie ich ihn loswerde.
Ich hab mal den Code auf's wichtigste beschnitten und hier http://www.digital-joga.de.vu/Test.zip hochgeladen.
Wäre toll, wenn einer von euch den Fehler finden könnte und mir sagt, wie ich ihn loswerde.