Seite 1 von 1

Hintergrungbild mit CatchImage - WebGadget mit Frame

Verfasst: 28.06.2010 21:52
von marcelx
Hallo,

ich versuche ein Bild im Hintergrung zu bekommen, was funktionniert:
leider, wenn ich meine Windows-Applikationsfenstern minimiert und wieder im Vordergrung bring fehlen einiege meine Sachen wie Button und Webgadget. Das verstehe ich nicht:

Code: Alles auswählen

Enumeration
#Window_0
#txt1
#txt2
#txt3
#buttonEnd
#buttonNew
#web
#frame
#img
EndEnumeration

Define.l Event, EventWindow, EventGadget, EventType, EventMenu

Global width.i = 960
Global height.i = 768

Global W_dscrx.i = 80
Global W_dscry.i = 20
Global W_dscrw.i = 700
Global W_dscrh.i = 570
W_dscrx = (width - W_dscrw)/2
    
#pathTxt = "text\"
UseJPEGImageDecoder()

imgBack = CatchImage (1,?imgBack)


If OpenWindow(#Window_0, 0, 0, width, height, "Titel", #PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
  hWnd = GetActiveWindow()
  ; menu
  TextGadget(#txt1, 0, height-120, width, 120, "");
  SetGadgetColor(#txt1, #PB_Gadget_BackColor, RGB($99, $CC, $CD))
  
  TextGadget(#txt2, 0, height-30, width, 25, "text ... ", #PB_Text_Center)

  SetGadgetColor(#txt2, #PB_Gadget_BackColor, RGB($99, $CC, $CD))
  SetGadgetColor(#txt2, #PB_Gadget_FrontColor, RGB($33, $66, $CC))
  
  ButtonGadget(#buttonEnd,      width -100, height-100, 70, 30, "end")
  
  WebGadget(#web, W_dscrx, W_dscry, W_dscrw, W_dscrh, "")
  SetGadgetItemText (#web, #PB_Web_HtmlCode, dscr.s)
  Frame3DGadget(#frame, W_dscrx-1, W_dscry-1, W_dscrw+2, W_dscrh+2, "xxxxxxx", #PB_Frame3D_Flat)
     
  ButtonGadget(#buttonNew,      width/2 + 50, height-100, 70, 30, "new")
    ;Debug("X"+Str(height))
  ImageGadget(#img, 0,0,width,height-300,imgBack)
  DisableGadget(#img,1)
EndIf

Repeat
  Event = WaitWindowEvent()
  Select Event
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      If EventGadget = #buttonEnd
        CloseWindow(#Window_0)
        Break
      ElseIf EventGadget = #buttonNew
       StringGadget(#txt3, (width-225)/2 + 30, height-160, 200, 20, "Was ist das")
      EndIf
      
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Window_0
        CloseWindow(#Window_0)
        Break
      EndIf
  EndSelect
ForEver

DataSection
  imgBack: IncludeBinary "imgBack.jpg"
  dscr: IncludeBinary #pathTxt + "W_1_dscr.html" : W_1_end:
EndDataSection 
Woran könnte es liegen?
Danke und Gruß

Re: Hintergrungbild mit CatchImage

Verfasst: 28.06.2010 22:00
von STARGÅTE
Vermutlich (kanns nicht testen, mir fehlen die Grafiken) weil du das ImageGadget über die anderen zeichnest, und beim neuzeichen des Fensters wird das dann auch dort hingelegt, also über alle anderen.

Re: Hintergrungbild mit CatchImage

Verfasst: 28.06.2010 22:04
von marcelx
Liegt es an der Reihefolge der Aufruf von ImageGadget ?

Re: Hintergrungbild mit CatchImage

Verfasst: 28.06.2010 22:14
von mk-soft
Windows unterstütz keine Overlapped Gadgets und führt iregndwann immer zu Probleme.
Versuchs mal hiermit...

Code: Alles auswählen

UseJPEGImageDecoder() 
UsePNGImageDecoder() 
UseTIFFImageDecoder() 
UseTGAImageDecoder() 


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

DateiName$ = OpenFileRequester("Bild", "", "", 0)
Debug DateiName$
Debug LoadImage(1,DateiName$,#PB_Image_DisplayFormat)
Debug ResizeImage(1, GetSystemMetrics_(#SM_CXSCREEN),GetSystemMetrics_(#SM_CYSCREEN))
If Window_Form1()

  Repeat
    event = WaitWindowEvent()
  Until event = #PB_Event_CloseWindow
EndIf 
FF :wink:

Re: Hintergrungbild mit CatchImage

Verfasst: 30.06.2010 21:00
von marcelx
OK, es funktionniert wenn als erste

Code: Alles auswählen

  ImageGadget(#img, 0,0,width,height-300,imgBack)
  DisableGadget(#img,1)
verwendet und dann den Rest.

In mein Code hatte ich vergessen die HTML-Datei zu laden:

Code: Alles auswählen

dscr.s=PeekS(?dscr, ?W_1_end-?dscr)
Leider erscheind das Fenstern mit der HTML-Code ohne Rahme.

Mit "Frame3DGadget" kommt kein Frame.

Wenn ich ImageGadget auschaltet sehe ich mein Rahme.

Das verstehe ich nicht.

Woran könnte es liegen?

Danke und Gruß
Marcel

Re: Hintergrungbild mit CatchImage

Verfasst: 30.06.2010 21:53
von X360 Andy
So nebenbei ... wieso Frame3DGadget ? und kein FrameGadget ?

Re: Hintergrungbild mit CatchImage

Verfasst: 30.06.2010 21:58
von marcelx
FrameGadget gibt es nicht mit F1