Seite 2 von 2

Verfasst: 24.06.2009 21:43
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 

Verfasst: 26.06.2009 22:19
von The_Dark_Zim-.-
Öhm geht auf net ...
Wie könnte man das Problem denn wohl noch lösen ?

Gruß Zim

Verfasst: 28.06.2009 19:31
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

Verfasst: 28.06.2009 19:36
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)

Verfasst: 28.06.2009 19:41
von The_Dark_Zim-.-
Ich hab es kompiliert dann zu *.scr umbenannt installiert fertig ;)

Gruß Zim

Verfasst: 28.06.2009 21:36
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.