@gnozal,
Danke schön für Deinen Hinweis.
@scholly
Scholly hat geschrieben:
Selbstverständlich funktioniert es mit ImageList_ReplaceIcon_() - Ich hab dann noch etwas quergelesen und ImageList_AddIcon_() statt ImageList_Add_() tuts auch
Win32 Programmer's Reference hat geschrieben:
The ImageList_AddIcon macro adds an icon or cursor to an image list. ImageList_AddIcon calls the ImageList_ReplaceIcon function.
...
The ImageList_AddIcon macro is defined as follows:
#define ImageList_AddIcon(himl, hicon) ImageList_ReplaceIcon(himl, -1, hicon)
ImageList_AddIcon(himl, hicon) ist also ein Makro und macht nichts anderes als ImageList_ReplaceIcon(himl, -1, hicon) aufzurufen...
Ich habe für alle, die ein sofort funktionsfähiges Beispiel suchen, meinen obigen Code um die Anzeige eines Icon erweitert:
Code: Alles auswählen
;...New icon size
iconW = 32
iconH = 32
;...Create some images for this example
zeroImg = CreateImage(0, iconW, iconH)
StartDrawing(ImageOutput(0))
Box(0, 0, iconW, iconH, RGB(0, 0, 0))
StopDrawing()
greenImg = CreateImage(1, iconW, iconH)
StartDrawing(ImageOutput(1))
Box(0, 0, iconW, iconH, RGB(0, 255, 0))
StopDrawing()
blueImg = CreateImage(2, iconW, iconH)
StartDrawing(ImageOutput(2))
Box(0, 0, iconW, iconH, RGB(0, 0, 255))
StopDrawing()
redImg = CreateImage(3, iconW, iconH)
StartDrawing(ImageOutput(3))
Box(0, 0, iconW, iconH, RGB(255, 0, 0))
StopDrawing()
IconImg = LoadImage(4, #PB_Compiler_Home + "Examples\Sources\Data\CDPlayer.Ico")
;...Create our newly sized image list
newIL = ImageList_Create_(iconW, iconH, #ILC_COLOR32|#ILC_MASK, 0, 10)
;...Add our images
ImageList_Add_(newIL, ImageID(0), 0)
ImageList_Add_(newIL, ImageID(1), 0)
ImageList_Add_(newIL, ImageID(2), 0)
ImageList_Add_(newIL, ImageID(3), 0)
ImageList_ReplaceIcon_(newIL, -1, ImageID(4))
If OpenWindow(0, 0, 0, 700, 500, "TreeGadget mit großen Icons", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
TreeGadget(0, 10, 10, 680, 480)
AddGadgetItem (0, -1, "Node 1", greenImg, 0)
FreeImage(1)
AddGadgetItem (0, -1, "Node 2", blueImg, 0)
FreeImage(2)
AddGadgetItem(0, -1, "Sub-Item 1", redImg, 1)
FreeImage(3)
AddGadgetItem(0, -1, "Sub-Item 2", IconImg, 1)
FreeImage(0)
SetGadgetItemState(0, 1, #PB_Tree_Expanded)
;...Get handle to current TreeGadget normal image list
oldIL = SendMessage_(GadgetID(0), #TVM_GETIMAGELIST, #TVSIL_NORMAL, 0)
;...Replace the old image list with our new one
SendMessage_(GadgetID(0), #TVM_SETIMAGELIST, #TVSIL_NORMAL, newIL)
;...Destroy the old image list
ImageList_Destroy_(oldIL)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
End