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