Seite 2 von 2

ListView

Verfasst: 12.12.2004 05:47
von Hroudtwolf
Jawohl,das kling gut........
Aber wie heisst das API für dieses ListView ????????
(es ist ja offenbar transparent !)

Verfasst: 12.12.2004 05:50
von MVXA
eben nicht. Man ändert den Hintergrund des Listviews halt auf die BMP, die den Desktop hintergrund darstellen soll. Die Icons werden schon automatisch transparent drauf gezeichnet.

LISTVIEW

Verfasst: 12.12.2004 05:54
von Hroudtwolf
Bleibt mir nur noch die Frage ...............

Wie heisst die API hierfür ??????

Verfasst: 12.12.2004 13:14
von Christian
CodeArchiv schafft Abhilfe. Ein von mir leicht verändertes Beispiel 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

CreateImage(0, 32, 32) ; Icon
If StartDrawing(ImageOutput())
     Box(0, 0, 32, 32, RGB(155, 155, 255))
    StopDrawing()
EndIf

OleInitialize_(0)
If OpenWindow(0, 384, 288, 640, 480, #PB_Window_SystemMenu|#PB_Window_MinimizeGadget, "ListIconGadget background image example")
  If CreateGadgetList(WindowID())
    ListIconGadget = ListIconGadget(0, 0, 0, 640, WindowHeight(), "Column 0", LVCWidth, #PB_ListIcon_FullRowSelect)
     ChangeListIconGadgetDisplay(0, 0)
      AddGadgetColumn(0, 1, "Column 1", 640)
       AddGadgetItem(0, 0, "Icon 1", UseImage(0))
       AddGadgetItem(0, 0, "Icon 2", UseImage(0))

    SendMessage_(ListIconGadget, #LVM_SETTEXTCOLOR, 0, $000000)
    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;|#LVBKIF_STYLE_TILE
      lbk\pszImage = @File$
;      lbk\xOffsetPercent;
;      lbk\yOffsetPercent;
      SendMessage_(ListIconGadget, #LVM_SETBKIMAGE, 0, lbk)
    EndIf
    Repeat
      EventID = WaitWindowEvent()
    Until EventID = #PB_EventCloseWindow
  EndIf
EndIf
OleUninitialize_()
End

Verfasst: 12.12.2004 15:11
von MVXA
Mir fällt grade auf, die Icons im ListView sind garnicht bewegbar :shock:. Unter VB konnte ich die doch mit dem ähnlichem GUI Element bewegen :freak:

Verfasst: 26.07.2006 05:35
von Just_reading
Mir fällt grade auf, die Icons im ListView sind garnicht bewegbar . Unter VB konnte ich die doch mit dem ähnlichem GUI Element bewegen
Dazu musst du dir ein Callback schreiben das ne Drag-Routine hat.
Mit der Message LVM_SETITEMPOSITION kannst du das Icon wieder auf eine neue Stelle schreiben lassen.

Verfasst: 26.07.2006 06:50
von #NULL
>> der Desktop ist nicht anderes als ein ListView (ListIconGadget in PB) im
>> Darstellungsmodus grosser Icons
>> Grüße ... Kiffi

windows bietet nicht zu fällig die möglichkeit von der symboldarstellung in z.b. eine listen- oder detail-ansicht des desktops zu wechseln?

Verfasst: 26.07.2006 10:05
von Kiffi
> windows bietet nicht zu fällig die möglichkeit von der symboldarstellung in
> z.b. eine listen- oder detail-ansicht des desktops zu wechseln?

Code: Alles auswählen

hDesktop=GetDesktopWindow_()
hDesktop=FindWindowEx_(hDesktop, 0, "Progman", "Program Manager")
hDesktop=FindWindowEx_(hDesktop, 0, "SHELLDLL_DefView", 0)
hDesktop=FindWindowEx_(hDesktop, 0, "SysListView32", 0)

; Sinnvolle Flags:
; #LVS_ICON
; #LVS_SMALLICON
; #LVS_LIST
; #LVS_REPORT

SetWindowLong_(hDesktop, #GWL_STYLE, (GetWindowLong_(hDesktop, #GWL_STYLE) & ~#LVS_TYPEMASK) | #LVS_ICON)
Grüße ... Kiffi

Verfasst: 26.07.2006 15:37
von #NULL
dankesehr, KiFFi :)