Bildschirmschoner ?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Beitrag von jojo1541 »

Code: Alles auswählen

InitSprite()
InitKeyboard()

  DataSection
    Pic1: IncludeBinary "Pilz1.bmp"
    Pic2: IncludeBinary "Pilz2.bmp"
  EndDataSection

Global quit

; Bildschirmschoner werden unter  Wndows wie weiter oben beschrieben mit Parametern gestartet.
Param$ = UCase(ProgramParameter()) 


If Len(Param$) > 2 
  Param1$ = RemoveString(Param$, Left(Param$,2),1) 
Else 
  Param1$ = ProgramParameter() 
EndIf 



Param$ = RemoveString(Param$, Left(Param$,1),1) 
Param$ = Left(Param$,1) 






Procedure scrnsaver()   
   OpenScreen(1024,768,32,"Pilz")   
   
   CatchSprite(0, ?Pic1)
   CatchSprite(1, ?Pic2)

   TransparentSpriteColor(0,RGB(255, 0, 220))
   TransparentSpriteColor(1,RGB(255, 0, 220))
   
   
   Repeat
    SetFrameRate(1)
    If w = 2
     w = 0
    EndIf
  
    ClearScreen($4C4C4C)
   
    If w = 0
     ClearScreen($4CFF4C)
     ;DisplayTransparentSprite(0,0,0)
    ElseIf w = 1
      ClearScreen($4C4CFF)
     ;DisplayTransparentSprite(1,0,0)
    EndIf
  
    StartDrawing(ScreenOutput())
    DrawingMode(#PB_2DDrawing_Transparent)
    DrawText(0,752,"To exit press 'ESC'!")
    StopDrawing()
    
    ExamineKeyboard()
    FlipBuffers()
    w + 1
    
    Delay(1)
    
    If KeyboardPushed(1)
      quit = 1
    EndIf
    
    Until quit = 1
    

EndProcedure

 
Select Param$
  Case ""  ;wenn kein Parameter
    scrnsaver()
 
  Case "C"  ;wenn Parameter gleich c ist( bedeutet, dass der Bildschirmschoner konfiguriert werden soll.(rechte Maustaste auf die Datei, konfigurieren))
    ;Einstellungen
    MessageRequester("Optionen","Hier stehen Optionen")
  Case "P"  ;Vorschau Taste im Anzeige-Menü
    ;Vorschau
    scrnsaver()
  Case "A" ; Passwort setzen im Anzeige-Menü
    ;Passwort
    MessageRequester("PAsswort","Hier könnte ihr Passwort verändert oder gesetzt werden.")
  Case "S" ;S(art) Parameter, startet den Bildschirmschoner
    ;Hauptprogramm
    scrnsaver()

EndSelect
 
 
So würd ichs machen.
den Anfang NIE in eine Schleife packen, da der Parameter nur einmal übergeben wird und nach dem zweitem durchlauf des Codestücks gelöscht wird.

Code: Alles auswählen

Param$ = RemoveString(Param$, Left(Param$,1),1); entfernt das erste Zeichen, also beim zweitem Durchlauf den gesamten Parameter 
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Benutzeravatar
The_Dark_Zim-.-
Beiträge: 372
Registriert: 18.03.2008 16:53

Beitrag von The_Dark_Zim-.- »

Öhm geht auf net ...
Wie könnte man das Problem denn wohl noch lösen ?

Gruß Zim
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
Benutzeravatar
The_Dark_Zim-.-
Beiträge: 372
Registriert: 18.03.2008 16:53

Beitrag von The_Dark_Zim-.- »

Hey Ho ich hab es nun geschaft :)
Mit dieser hilfe: http://www.purearea.net/pb/CodeArchiv/G ... Preview.pb
Hier der Code:

Code: Alles auswählen

InitSprite()
InitKeyboard()

  DataSection
    Pic1: IncludeBinary "Pilz1.bmp"
    Pic2: IncludeBinary "Pilz2.bmp"
  EndDataSection

Global quit

Procedure PreviewAutoDestruction(window, message, wParam, lParam) 
   Shared WM_DestroyPreview 
    
   Result = #PB_ProcessPureBasicEvents 
   Select message 
      Case #WM_CLOSE 
         DestroyWindow_(window) 
         End 
      Case WM_DestroyPreview 
         End 
   EndSelect 
   ProcedureReturn Result 
EndProcedure 

Procedure  saver()

OpenScreen(1024,768,32,"Pilz")   
   
   CatchSprite(0, ?Pic1)
   CatchSprite(1, ?Pic2)

   TransparentSpriteColor(0,RGB(255, 0, 220))
   TransparentSpriteColor(1,RGB(255, 0, 220))
   
   
   Repeat
    SetFrameRate(1)
    If w = 2
     w = 0
    EndIf
 
    ClearScreen($4C4C4C)
   
    If w = 0
     DisplayTransparentSprite(0,0,0)
    ElseIf w = 1
     DisplayTransparentSprite(1,0,0)
    EndIf
 
    StartDrawing(ScreenOutput())
    DrawingMode(#PB_2DDrawing_Transparent)
    DrawText(0,752,"To exit press 'ESC'!")
    StopDrawing()
   
    ExamineKeyboard()
    FlipBuffers()
    w + 1
   
    Delay(1)
   
    If KeyboardPushed(1)
      quit = 1
   End
    EndIf
   
    Until quit = 1

EndProcedure

FirstParam.s    =ProgramParameter() 
command.s       =LCase(Left(ReplaceString(FirstParam,"-","/"),2)) 
ParentWindow.l  =Val(StringField(FirstParam,2,":")) | Val(ProgramParameter()) 
        
Select command      
   Case "/p" 
   Case "/c" 
   Default 
      Saver() 
EndSelect 

End
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Beitrag von jojo1541 »

nur mal als Frage: wie hast du das ausprobiert? kompiliert und als BIldschirmschoner getestet, oder mit F5 gestartet? Wenn F5, hast du nen Startparameter mit angegeben?(Bei mir funktioniert es perfekt)
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Benutzeravatar
The_Dark_Zim-.-
Beiträge: 372
Registriert: 18.03.2008 16:53

Beitrag von The_Dark_Zim-.- »

Ich hab es kompiliert dann zu *.scr umbenannt installiert fertig ;)

Gruß Zim
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Beitrag von jojo1541 »

also bei mir funktioniert mein Beispiel, wenn ich über das Anzeige-Menü optionen auswähle...
Setz mal in den Compiler-OPtionen einen Startparameter wie -c oder -a und kompiliers dann mal.
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Antworten