Bildschirmschoner

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Programie
Beiträge: 1280
Registriert: 06.08.2005 22:56
Computerausstattung: https://www.sysprofile.de/id160800
Wohnort: Gernsbach
Kontaktdaten:

Bildschirmschoner

Beitrag von Programie »

Ja, Hallo erstmal.
Ich hätte da mal "eine" kleine Frage.

Ist es möglich in PB einen Bildschirmschoner zu schreiben? Und wenn ja, wie? :freak:

Währe echt cooooooool! :allright:

:lamer:
BildBildBildBild
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

Im CodeArchiv gibts ein CodeBeispiel dazu. Musst nur mal etwas suchen... :wink:

EDIT: Hier ist der Code:
http://www.purearea.net/pb/CodeArchiv/O ... enSaver.pb
ReneMiner
Beiträge: 58
Registriert: 20.07.2007 14:54
Wohnort: zwischen Westerwald und Siegerland

Beitrag von ReneMiner »

Ich möchte keinen Screensaver programmieren- nein,
aber ich hab einige Anfänger-Fragen die damit zusammenhängen und wollte keinen Extra-Thread eröffnen,

und zwar ist konrekt folgendes passiert:

Ich hab mein Balla-balla- Spielchen
( siehe im Spiele-Feedback-Bereich http://www.purebasic.fr/german/viewtopi ... 645#161645 ) testgespielt - und zwar per Joystick.

Irgendwann ging dann während des Spielens der Bildschirmschoner an - ein Ruckeln mit der Maus brachte zwar mein Window und den Rest des Desktops wieder in Ordnung aber nicht den im Window geöffneten Screen - der blieb grau...

Drum hier mal ein paar Fragen:


Gibt es einen cleveren Weg oder einen Parameter (z.b. beim InitJoystick() - wo es zwar nix direkt mit zu tun hat, aber Sinnvoll wäre ) den Bildschirmschoner solange der Joystick noch Eingaben macht zu unterdrücken bzw. irgendwelche Tastendrücke oder sowas zu simulieren damit der Bildschirmschoner nicht anspringt?

Wie stelle ich meinen (windowed) Screen wieder her falls ich doch einen Bildschirmschoner zulassen möchte?
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Beitrag von PureLust »

Wie wäre es mit einer kleinen Forensuche nach "bildschirmschoner deaktivieren"?
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@ReneMiner

kann deine beobachtung nicht bestätigen.
weder für dein game noch für ne eigene windowedscreen-demo.

was fürn bildschirmschoner ist denn das?

teste doch mal deinen bildschirmschoner, ob er diesen windowedscreen auch kaputt macht:
http://www.purebasic.fr/german/viewtopic.php?t=11280
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Beitrag von PureLust »

Kaeru Gaman hat geschrieben:kann deine beobachtung nicht bestätigen.
weder für dein game noch für ne eigene windowedscreen-demo.
Wenn er solche Fälle nicht mit "IsScreenActive()" abgefangen hat, kann es sehr gut sein, dass sein Programm durch einen Bildschirmschoner oder auch Alt+TAB abstürzt - MUSS es aber nicht.
Somit kann es also sein dass Du "Glück" gehabt hast. ;)
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
ReneMiner
Beiträge: 58
Registriert: 20.07.2007 14:54
Wohnort: zwischen Westerwald und Siegerland

Beitrag von ReneMiner »

Doch- ein IsScreenActive hab ich drin- nur dann wird gerendert.

Der Bildschirmschoner hier (auf diesem Rechner) ist der Default WinXP- auf meinem Spiel und Programmier-Rechner hab ich sowas natürlich nicht.

Die Forensuche nach Bildschirmschoner deaktivieren erspar ich mir jetzt aber weil ich den Thread selbstverständlich längst gelesen habe: der Thread dort verwendet irgendwelche nicht näher bezeichneten Libs, wahrscheinlich auch Windows-spezifisch.
Dazu müsste ich erstmal wissen:

In welcher Lib würde ich die Screensaver-Settings finden?

Wie kann ich in meinem PB-Code abfragen auf welchem System das PB-Programm ausgeführt wird?
Es tät ja sicher keinen Sinn machen einen Windows-Screensaver auf einem Mac oder Amiga umgehen zu wollen...

Zudem will ich den Screensaver nicht deaktivieren sondern nur zeitweilig unterdrücken und nachdem der Screensaver vieleicht gelaufen ist möchte ich die initialisierte Sprite-Engine nicht unbedingt erneut initialisieren müssen um weiterspielen zu können,

Testergebnis (KG's Link) :

Versuch 1:

Nach dem Rückkehren vom Screensaver bleibt das Fenster weiss, pb bricht die Ausführung des Codes ab mit folgender Meldung:

ERROR- Line 116
ERROR - There's no current 2dDrawing Object

Beim 2. Versuch hab ich das Fenster per Klick auf's X (Fenster-Schliessen) abbrechen wollen:

"PB hat ein Problem festgestellt und muss beendet werden"

Danach war mein PB-Editor-Fenster aber noch da, gleiche Meldungen wie Versuch 1
Christian H
Beiträge: 134
Registriert: 18.10.2005 10:22
Wohnort: Welschbillig

Beitrag von Christian H »

ReneMiner hat geschrieben:Wie kann ich in meinem PB-Code abfragen auf welchem System das PB-Programm ausgeführt wird?
Es tät ja sicher keinen Sinn machen einen Windows-Screensaver auf einem Mac oder Amiga umgehen zu wollen...
Über Compiler Direktiven http://www.purearea.net/pb/german/manua ... tives.html

Beispiel:

Code: Alles auswählen

      CompilerSelect #PB_Compiler_OS
        CompilerCase #PB_OS_AmigaOS
          ; etwas Amiga spezifischer Programmcode
        CompilerCase #PB_OS_Linux
          ; etwas Linux spezifischer Programmcode
        CompilerCase #PB_OS_Windows
          ; etwas Windows spezifischer Programmcode
      CompilerEndSelect
Gruß Christian
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Testergebnis (KG's Link) :

äußerst merkwürdig...

wie gesagt, ich hab den bildschirmschoner aktiviert, einfach den obersten in der liste (3D-flowerbox) und ich hab keine probleme beobachtet...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
ReneMiner
Beiträge: 58
Registriert: 20.07.2007 14:54
Wohnort: zwischen Westerwald und Siegerland

Beitrag von ReneMiner »

Vieleicht ist es untergegangen- eigentlich hätte ich gern gewusst wie man nun rauskriegt ob zwischenzeitlich ein Bildschirmschoner gestartet wurde und wie ich den WindowedScreen wieder herstellen kann:

Ist das nun ein generelles PB-Problem - und nicht nur ein auf gerade beide von mir benutzte Rechner beschränktes - das das initialisierte DirectX- oder 2dDrawing-Objekt im Windowed Screen beim Umschalten auf Bildschirmschoner-Vollbild zerstört wird? (ich habs inzwischen übrigens mit mehreren verschiedenen Screensavern ausprobiert, immer das Selbe)

Wäre es die einzige Lösung alles neu zu initialisieren sobald ich per OnError... mitgeteilt bekomme das es kein gültiges Bildausgabe-Objekt mehr gibt?

Und - kann man (z.B. bei Joystick-Eingaben) irgendwas ans Windows senden was dem Windows vormacht die Joystick-Eingaben wären z.B. eingehende Tastendrücke oder Mausbewegungen so das der Bildschirmschoner nur dann anspringt wenn wirklich nix los ist?
Antworten