ListIconGadget Background-Image beim scrollen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Christian
Beiträge: 73
Registriert: 31.08.2004 16:02

ListIconGadget Background-Image beim scrollen

Beitrag von Christian »

Hallo!

Ich habe ein ListIconGadget, dem ich mit El_Chonis Code auch erfolgreich ein Hintergrundbild zugeweisen habe. Leider ist es nun so, dass bei vielen Einträgen, bei denen im ListiconGadget gescrollt werden muss, das Hintergrundbild nicht mit scrollt. Irgendwann bin ich dann also an dem Punkt, wo kein Bild mehr im Hintergund zu sehen ist. Nun gibt es zwar die Möglichkeit ein Flag zu setzen, bei dem dann das immer wiederholt wird, sodass ich beim Scrollen immer etwas im Hintergrund habe, nur leider bringt mir das nichts.
Ich hätte gern, dass das Bild, welches ich im Hintergund habe immer sichtbar ist und auch beim scollen immer der selbe Bereich des Bildes zu sehen ist. Also so, dass nur die Schrift über dem Bild gescrollt wird, aber das Bild im Hintergund immer zu sehen ist.

Gibt es dort eine Möglichkeit, um das zu bewerkstelligen? Ich würde mich über Hilfe sehr freuen.

Danke,
Christian

PS: Hier der Code von EL_Choni:

Code: Alles auswählen

; English forum: http://purebasic.myforums.net/viewtopic.php?t=5208&highlight=
; Author: El_Choni
; Date: 25. February 2003

#LVBKIF_SOURCE_NONE = 0
#LVBKIF_SOURCE_HBITMAP = 1
#LVBKIF_SOURCE_URL = 2
#LVBKIF_SOURCE_MASK = 3
#LVBKIF_STYLE_NORMAL = 0
#LVBKIF_STYLE_TILE = $10
#LVBKIF_STYLE_MASK = $10
#LVM_SETBKIMAGE = #LVM_FIRST + 68
#LVM_SETBKIMAGEW = #LVM_FIRST + 138
#LVM_GETBKIMAGE = #LVM_FIRST + 69
#LVM_GETBKIMAGEW = #LVM_FIRST + 139
#CLR_NONE = -1

Structure LVBKIMAGE
  ulFlags.l
  hbm.l
  pszImage.l
  cchImageMax.l
  xOffsetPercent.l
  yOffsetPercent.l
EndStructure

OleInitialize_(0)
If OpenWindow(0, 384, 288, 640, 480, #PB_Window_SystemMenu|#PB_Window_MinimizeGadget, "ListIconGadget background image example")
  LVWidth = WindowWidth()
  LVCWidth = Int(LVWidth/4)-1
  If CreateGadgetList(WindowID())
    ListIconGadget = ListIconGadget(0, 0, 0, LVWidth, WindowHeight(), "Column 0", LVCWidth, #PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
    AddGadgetColumn(0, 1, "Column 1", LVCWidth)
    AddGadgetColumn(0, 2, "Column 2", LVCWidth)
    AddGadgetColumn(0, 3, "Column 3", LVCWidth)

    For a = 0 To 50
    AddGadgetItem(0, a, "Abb "+Str(a)+Chr(10)+"Baa "+Str(a)+Chr(10)+"Ccd "+Str(a)+Chr(10)+"Dee "+Str(a)+Chr(10), 0)
    Next

    SendMessage_(ListIconGadget, #LVM_SETTEXTCOLOR, 0, $ff0000)
    SendMessage_(ListIconGadget, #LVM_SETBKCOLOR, 0, #CLR_NONE)
    SendMessage_(ListIconGadget, #LVM_SETTEXTBKCOLOR, 0, #CLR_NONE)
    Buffer = AllocateMemory(512)
    GetModuleFileName_(GetModuleHandle_(0), Buffer, 512)
    InitialDir$ = GetPathPart(PeekS(Buffer))
    FreeMemory(0)
    File$ = OpenFileRequester("Select image", InitialDir$, "ListIcon supported images|*.bmp;*.ico;*.gif;*.jpg;*.wmf;*.emf", 0)
    If File$
      lbk.LVBKIMAGE
      lbk\ulFlags = #LVBKIF_STYLE_NORMAL | #LVBKIF_SOURCE_URL

      lbk\pszImage = @File$
      lbk\xOffsetPercent = 50
      lbk\yOffsetPercent = 50
      SendMessage_(ListIconGadget, #LVM_SETBKIMAGE, 0, lbk)
    EndIf
    Repeat
      EventID = WaitWindowEvent()
    Until EventID = #PB_EventCloseWindow
  EndIf
EndIf
OleUninitialize_()
End