Seite 1 von 2

Window Background Image setzen ohne PureTools ??

Verfasst: 14.03.2005 16:59
von nco2k
hi folks,

nur so aus neugier... wie setzt man ein Image als fenster hintergrund so wie bei SetWinBackgroundImage() aus den PureTools ??

c ya,
nco2k

Verfasst: 14.03.2005 17:35
von ts-soft

Code: Alles auswählen

Procedure.l Window_Form1()
  If OpenWindow(0,149,202,400,300,#PB_Window_SystemMenu,"")
    Brush.LOGBRUSH\lbStyle=#BS_PATTERN
    Brush\lbColor=#DIB_RGB_COLORS
    Brush\lbHatch=UseImage(1)
    SetClassLong_(WindowID(0),#GCL_HBRBACKGROUND,CreateBrushIndirect_(Brush))
    InvalidateRect_(WindowID(0), #Null, #True)
    If CreateGadgetList(WindowID(0))
      ProcedureReturn WindowID()
    EndIf
  EndIf
EndProcedure

LoadImage(1,"hintergrund.bmp")
If Window_Form1()

  Repeat
    event = WaitWindowEvent()
  Until event = #PB_Event_CloseWindow
EndIf
Den Pfad zum Bild bitte anpassen
MfG
Thomas

Verfasst: 14.03.2005 17:50
von nco2k
ok danke, muss ich den brush aber nicht vorher noch freigeben bevor ich das programm beende, oder macht das windows automatisch ?!

c ya,
nco2k

Verfasst: 14.03.2005 17:57
von Hroudtwolf
Einfacher und mit weniger Code gehts so.


Code: Alles auswählen

  If OpenWindow(0,149,202,400,300,#PB_Window_SystemMenu,"") 
 himage.l=loadimage (1,"deinbild.bmp")
hBrush.l = CreatePatternBrush_(hImage.l) 
  SetClassLong_(windowid(0), #GCL_HBRBACKGROUND, hBrush.l) 
  InvalidateRect_(windowid(0),, #NULL, #TRUE) 
Repeat
    event = WaitWindowEvent()
  Until event = #PB_Event_CloseWindow 
DeleteObject_(hBrush.l)
endif 

Verfasst: 14.03.2005 17:58
von freedimension
Du bist alleinverantwortlich für jeden von dir angelegten Brush und musst ihn daher auch wieder freigeben. Andernfalls kann es (muss aber nicht) zu unschönen Fehlermeldungen kommen wenn man das Programm beendet.

Verfasst: 14.03.2005 17:58
von ts-soft
Ich denke, das macht PB automatisch (ohne Garantie :D)

Verfasst: 14.03.2005 18:03
von ts-soft
@Hroudtwolf
Was ist an Deinem Code einfacher ? Abgesehen davon das Du direkt die Händels verwendest, statt diese mit PB-Funktionen zu ermitteln sehe ich keinen Unterschied. Mein Code ist wahrscheinlich verständlicher :D

Verfasst: 14.03.2005 19:12
von Hroudtwolf
@ts-soft

Das kannst du halten wie die Dachdecker.

Verfasst: 15.03.2005 14:06
von bobobo
Hroudtwolf hat geschrieben:@ts-soft

Das kannst du halten wie die Dachdecker.
nicht ganz .. der ts-soft-code funktioniert im Gegensatz zu Deinem
(liegt's an XP?)

Verfasst: 15.03.2005 14:31
von Hroudtwolf
habs windowid(0) vergessen.
Sorry........ :oops: