Seite 1 von 1

Umschalten vom Window in den Sreen-Modus und zurück

Verfasst: 02.03.2006 14:03
von kdeparade
Hallo,
möchte gerne aus einem Fenster per Button in den Screenmodus wechseln und bei Beendigung wieder in das 1. Fenster wechseln.
Funktioniert auch soweit. Nur wenn ich aus dem Screenmodus zurück wechsele kommt ein "Windows Problembericht" ala Purebasic1172515.exe hat ein Problem festgestellt und muss beendet werden.
Folgender Konzeptablauf:

Code: Alles auswählen

openwindow(0...) > Openscreen(...) > closescreen() > usewindow()
Kann man das so machen? Was muss bei der Umschalterei beachtet werden?

Gruss KU

Verfasst: 02.03.2006 16:18
von uweb
Du hättest mir die Antwort mit etwas Code leichter machen können.
- Es war das erste mal, daß ich etwas mit Screen gemacht habe.
Aber, dank Codearchiv war es dann auch für mich machbar.

Das Umschalten läuft bei mir ohne Probleme.

Code: Alles auswählen

InitSprite() 
Procedure DrawRText(DC.l,x,y,Text.s,fFont.s,fangle.l,fHeight) 
  Font = CreateFont_(fHeight,0,fangle*10,0,0,0,0,0,0,0,0,0,0,fFont) 
  GetWindowRect_(WindowID(),r.RECT) 
  OldFont = SelectObject_(DC,Font) 
  SetTextAlign_(DC,#TA_BASELINE) 
  SetBkMode_(DC,#TRANSPARENT) 
  ExtTextOut_(DC, x,y,0 ,r,Text,Len(Text),0 ) 
  SelectObject_(DC,OldFont) 
  DeleteObject_(Font) 
EndProcedure 

If OpenWindow(0, 100, 200, 200, 40, #PB_Window_SystemMenu, "Test")And CreateGadgetList(WindowID(0))
  ButtonGadget(0, 10, 10, 180, 20, "La Li Lu")
  Repeat
    EventID = WaitWindowEvent()

    If EventID = #PB_Event_CloseWindow
      Quit = 1
    EndIf

    If EventID = #PB_Event_Gadget
      If EventGadgetID() = 0
        If OpenScreen(800, 600, 32, "TestScreen")
          ClearScreen(0,0,0) 
          DC = StartDrawing(ScreenOutput())
          FrontColor(255,128,0) 
          DrawRText(DC,300,300,"Nur der Mann im Mond schaut zu.","Arial",15,20) 
          ;Parameter 
          ;1 = DeviceContext 
          ;2 = StartX 
          ;3 = StartY 
          ;4 = Text$ 
          ;5 = Font$ 
          ;6 = Angle 
          ;7 = FontHeight 
          StopDrawing()
          FlipBuffers()
          Delay (3000) 
          CloseScreen() 
          UseWindow(0) ; wäre eigentlich nicht nötig
        EndIf
      EndIf
    EndIf

  Until Quit = 1
  
EndIf

Verfasst: 02.03.2006 16:27
von Macros
Wo hast du den Befehl DrawRText() her?
4.0?
Der wird von 3.94 problemlos verarbeitet,
aber steht nicht in der Hilfe und kommt auch aus keiner Userlib :?

Verfasst: 02.03.2006 16:29
von uweb
Aber, dank Codearchiv war es dann auch für mich machbar.
http://www.purearea.net/pb/german/index.htm

Code: Alles auswählen

Procedure DrawRText(DC.l,x,y,Text.s,fFont.s,fangle.l,fHeight)
  Font = CreateFont_(fHeight,0,fangle*10,0,0,0,0,0,0,0,0,0,0,fFont)
  GetWindowRect_(WindowID(),r.RECT)
  OldFont = SelectObject_(DC,Font)
  SetTextAlign_(DC,#TA_BASELINE)
  SetBkMode_(DC,#TRANSPARENT)
  ExtTextOut_(DC, x,y,0 ,r,Text,Len(Text),0 )
  SelectObject_(DC,OldFont)
  DeleteObject_(Font)
EndProcedure 

Verfasst: 02.03.2006 16:36
von Macros
Oh man bin ich dummBild

Verfasst: 02.03.2006 17:33
von uweb
Ok, Du bist erlöst. Ich habe das jetzt lange genug so stehen lassen.
Manchmal sieht man eben den Wald vor lauter Bäumen nicht.
Den Spruch musste ich heute auch schon auf mich selbst münzen.

Kleiner Tipp :
Das Lied geht noch weiter. "... Darum schlafe auch Du." (ab und zu)
Bei mir hilft das meistens.