Beta7:CloseScreen()?:GELÖST^^

Fragen und Bugreports zur PureBasic 4.0-Beta.
Marvin
Beiträge: 497
Registriert: 17.07.2005 14:42
Wohnort: Krikkit

Beta7:CloseScreen()?:GELÖST^^

Beitrag von Marvin »

Ich glaub ich hab nen Bug, es könnt aber auch sein, dass das extra so is. Erstmal: Ich nutze noch die Beta7, da aber bisher hier nichts von wegen diesem Thema geschrieben wurde, denk ich, dass es das auch noch in der neuen Beta9 gibt :| .
Ich bin grad am schreiben eines Programmes, dass unter anderem einen FullScreen benutzt. Dieser soll während des Programmablaufs geschlossen werden. Benutze ich also den Befehl

Code: Alles auswählen

CloseScreen()
wird aber das gesamte Programm beendet! (Das Programm is in einer Schleife, einen Break-Befehl benutz ich nich.) :?

P.S.: Wenns kein Bug is, währe es nett, wenn ihr mir erklärn könntet, wie's geht :wink:

//EDIT:Gelöst, image<>sprite (s. unten) :lol:
Zuletzt geändert von Marvin am 09.04.2006 16:48, insgesamt 2-mal geändert.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Beta7:CloseScreen()?

Beitrag von ts-soft »

Marvin hat geschrieben: P.S.: Wenns kein Bug is, währe es nett, wenn ihr mir erklärn könntet, wie's geht :wink:
Steht eigentlich relativ deutlich in der Hilfe.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Marvin
Beiträge: 497
Registriert: 17.07.2005 14:42
Wohnort: Krikkit

Beitrag von Marvin »

Die deutsche Hilfe hat geschrieben:CloseScreen()


Syntax

CloseScreen()

Beschreibung

Schließt den aktuellen Bildschirm (egal ob "Windowed" oder "Fullscreen" Modus). Nach dem Schließen eines Bildschirms, müssen alle Sprites erneut geladen werden, da das Bildschirmformat verloren geht und der Videospeicher freigegeben wird.

Ein(e) Applikation/Spiel kann problemlos während des Programmablaufs zwischen "Fullscreen" und "Windowed" Modus umschalten.

Unterstützte OS

Windows, Linux, MacOS X

<- ClipSprite() - Sprite Inhaltsverzeichnis - CopySprite() ->
:?

(Wie ich den Befehl normalerweise benutze, is mir klar. Ich meine bloß, wenns kein Bug ist, (wie) kann ich den Befehl dann verwenden, ohne dass das Programm beendet wird.../:->)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

wenn der screen geschlossen wurde, kann man ja nichts mehr sehen. man
kann auch keine sprites benutzen ohne screen usw. alle anderen befehle
funktionieren doch. ansonsten einen neuen screen erstellen. ohne code kann
ich dir aber keine tipps geben, ausser das deine logik irgendwo noch nicht
hinhaut.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Marvin
Beiträge: 497
Registriert: 17.07.2005 14:42
Wohnort: Krikkit

Beitrag von Marvin »

nee, nee... ich glaub ich meins anders :oops: .
ich hab ein programm ähnlich wie mastereye (wenn dus kennst), wenn von einem andern computer ein befehl gesendet wird, öffnet sich ein screen. wird der wieder geschlossen, soll das programm trotzdem weiterlaufen und den screen evtl. nochmal öffnen... :|

ich will den code jetz hier eigentlich nich posten, aber hier die stelle, an ders immer abreißt:

Code: Alles auswählen

Repeat
  ExamineMouse()
  StartDrawing(ScreenOutput())
    DrawImage(ImageID(ss),0,0)
  StopDrawing()
  If mouses
    DisplayTransparentSprite(mouses,MouseX(),MouseY())
  EndIf
  FlipBuffers()
  If NetworkServerEvent()=2
    cid=EventClient()
    *tmem=AllocateMemory(1024)
    ReceiveNetworkData(cid,*tmem,1024)
    If PeekS(*tmem)="RS"
      FreeMemory(*tmem)
      Break
    EndIf
  EndIf
Until MouseButton(1) And MouseX()<21 And MouseY()<21
FreeSprite(ss)
FreeSprite(mouses)
CloseScreen()
ss is ein hintergrund, mouses ist ein mauszeiger...

es reißt wirklich ab, also der server is weg, in der prozessliste is das programm nich mehr da... also wirklich beendet :(
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Das Programm läuft doch nach einem CloseScreen() normalerweise
weiter :?:
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

wenn der code nach closescreen() zuende ist, sollte das normal sein :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Marvin
Beiträge: 497
Registriert: 17.07.2005 14:42
Wohnort: Krikkit

Beitrag von Marvin »

nee <) , is nich zu ende, is wie gesagt eine (Repeat-ForEver-)Schleife...
(das läuft auf win98, kanns nur noch mal probiern...)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Hier der Beweis: es geht weiter nach CloseScreen()

Code: Alles auswählen

If ExamineDesktops()
  width = DesktopWidth(0)
  height = DesktopHeight(0)
  depth = DesktopDepth(0)
EndIf
If width And height And depth

  If InitSprite() = #False : End : EndIf
nochmal:
  If OpenScreen(width, height, depth, "")
    Delay(10000)
    CloseScreen()
    Select MessageRequester("CloseScreen() Test", "Nochmal?", #PB_MessageRequester_YesNo|#MB_ICONQUESTION)
      Case #PB_MessageRequester_Yes
        Goto nochmal
      EndSelect
    EndIf
EndIf
:mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Marvin
Beiträge: 497
Registriert: 17.07.2005 14:42
Wohnort: Krikkit

Beitrag von Marvin »

oh der kleine fehler is ja peinlich... :oops:
ihr habts aber auch net rausgekriegt :mrgreen: :lol:

is ganz einfach:
Marvin hat geschrieben:

Code: Alles auswählen

Repeat
  ExamineMouse()
  StartDrawing(ScreenOutput())
    DrawImage(ImageID(ss),0,0)
  StopDrawing()
  If mouses
    DisplayTransparentSprite(mouses,MouseX(),MouseY())
  EndIf
  FlipBuffers()
  If NetworkServerEvent()=2
    cid=EventClient()
    *tmem=AllocateMemory(1024)
    ReceiveNetworkData(cid,*tmem,1024)
    If PeekS(*tmem)="RS"
      FreeMemory(*tmem)
      Break
    EndIf
  EndIf
Until MouseButton(1) And MouseX()<21 And MouseY()<21
FreeSprite(ss)
FreeSprite(mouses)
CloseScreen()
ss is doch ein image und kein sprite! /:->
(Ihr hättets aber auch rauskriegen können, siehe DrawImage(ImageID(ss),0,0) :lol:)

war also nich das CloseScreen() sondern das FreeSprite(ss)! *andenkopfhau* :roll:

:iamwithstupid:


P.S.: Wäre evtl. nett, wenn ein mod das in Anfänger oder Allgemein verschieben könnte... :wink:
Gesperrt