Seite 1 von 1
Bildschirmschoner
Verfasst: 08.01.2007 15:26
von Macros
Ich hab eigentlich schon vor meinem ersten Bildschirmschoner damit angefangen,
aber hatte dann keine Lust mehr weiterzumachen.
Jetzt hab ich mich nochmal 2 volle Tagen drangesetzt,
und ihn endlich fertiggemacht.
- Der Bildschirmschoner unterstützt jetzt
wirklich alle Funktionen eines Bildschirmschoners,
sogar die Vorschau, auch wenn diese momentan
nicht in dem vorgesehenen Fenster angezeigt wird.
- Ein paar verschiedenfarbige Bälle flitzen (oder schleichen)
auf dem Bildschirm rum
- ogg oder wav Datein als Hintergrundmusik
+Mp3 +wma +midi
- 200 KB (ohne ogg Decoder wärens 86)
- bei Absturtz genauer Fehlerbericht,
der in die Zwischenablage kopiert wird
Es wäre nett, wenn ihr ihn dann auch hier postet.
- Wird auf eure Vorschläge hin erweitert
- Kleine Info für euch: 700 Codezeilen 19000 Zeichen
Screenshot:
http://www.rshost.de/jgs_db_bilder/bild ... 6391-4.jpg
Download:
http://10a.rshost.de/load/files/balls.scr
Ich freue mich über Feedback
Euer Macros
Verfasst: 08.01.2007 16:52
von Thomas
Hi,
hatte bis jetzt noch keine Zeit ihn ausprobieren, hört sich aber schon mal nicht schlecht an.
Wie macht man eigendlich einen Bildschirmschoner?
Verfasst: 08.01.2007 17:34
von Macros
Der einfache Teil:
du erstellst eine Exe, die auf die Parameter reagiert
(welche findest du in der Boardsuche)
und nennst sie in .scr um
Der Schwierige Teil:
Das eigentliche Programm ^^
und erst recht die Vorschau
Verfasst: 08.01.2007 17:59
von Tafkadasom2k5
*Quelltext sehen will*

Verfasst: 08.01.2007 18:09
von Macros
Bitte keine Diskusionen um den Stil,
falls er jemanden stört, ich kann damit sehr gut arbeiten.
Code: Alles auswählen
loadinfo() ;Einstellungen laden
programmpara.s=ProgramParameter()
a$=LCase(Mid(ReplaceString(programmpara, "-", "/"), 2,1))
ParentWindow.l =Val(StringField(programmpara,2,":")) | Val(ProgramParameter())
Select a$
Case "s"
run()
Case ""
config()
Case "p"
Preview(ParentWindow)
Case "c"
config()
Case "i"
run(1) ;Vorschau
EndSelect
End
Ab hier ists geklaut
Bis auf das RunProgram()
Code: Alles auswählen
Procedure Preview(preview)
; ------------------------
; preview image
; ------------------------
UseGadgetList(preview)
GetClientRect_(preview,@rc.rect)
CreateImage(1,rc\right,rc\bottom)
StartDrawing(ImageOutput(1))
DrawText(5,5,"siehe Nebenfenster",RGB(0,255,0))
StopDrawing()
ImageGadget(1,0,0,0,0,ImageID(1))
CloseGadgetList()
; ------------------------
; close previous previews
; ------------------------
Shared WM_DestroyPreview
WM_DestroyPreview=RegisterWindowMessage_(@"PREVIEW AUTO DESTRUCTION")
SendMessage_(#HWND_BROADCAST,WM_DestroyPreview,0,0)
; ------------------------
; the empty child window will receive all messages
; wait end of preview...
; ------------------------
SetParent_(OpenWindow(0,0,0,0,0,"CHILD WINDOW",#PB_Window_Invisible),preview)
SetWindowCallback(@PreviewAutoDestruction(),0)
RunProgram(GetExePath()+"balls.scr","/i","")
;Startet das Programm mit Parameter /i
;um die Vorschau zu starten,
;da das dähmliche Windowsfenster sich aufhängt
;während mein Programm läuft,
;Außer in seltenen Ausnahmefällen, die
;ich aber nur von Hand und nicht vom Code her reproduzieren kann.
EndProcedure
Code: Alles auswählen
Procedure PreviewAutoDestruction(window, message, wParam, lParam)
Shared WM_DestroyPreview
;aha, danke,
;da war ein Fehler, hab den wert der Konstante nicht im Programm :D
;mal schaun, ob man damit was anstellen kann ^^
Result = #PB_ProcessPureBasicEvents
Select message
Case #WM_CLOSE
DestroyWindow_(window)
End
Case WM_DestroyPreview
End
EndSelect
ProcedureReturn Result
EndProcedure
Verfasst: 10.01.2007 14:49
von Thomas
Eigentlich wollte ich den Quelltext nicht unbedingt sehen, hat mich nur mal interessiert.
Verfasst: 10.01.2007 15:33
von TomS
Du nicht, Thomas. Aber Tafkadasom2k5
Verfasst: 11.01.2007 09:47
von Tafkadasom2k5
Danke, das ist verständlich...
Interessantes gefrickel "nur für nen Bildschirmschoner"
Respekt, Makros

(auch wenns 'nur geklaut' seins ollte, wie du selber so nett sagst)
Gr33tz
Tafkadasom2k5