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

Anfängerfragen zum Programmieren mit PureBasic.
kdeparade
Beiträge: 41
Registriert: 16.01.2006 21:08

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

Beitrag 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
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Beitrag 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
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag 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 :?
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Beitrag 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 
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Oh man bin ich dummBild
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Beitrag 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.
Antworten