GetListIconIcon

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

GetListIconIcon

Beitrag von ts-soft »

Nachdem ich nirgends fündig wurde, hab ichs mir selbst gemacht :mrgreen:

Sieht einfach aus, aber bevor man es aus der MSDN quälen muß, denke ich,
ist es für den einen oder anderen nützlich.
(ich habs dringend benötigt)

Code: Alles auswählen

; Procedure um ein bestimmtes Icon eines ListIcongadgets zu ermitteln
; nützlich um zum Beispiel diese umzusortieren
; ermitteltes Icon ist am Ende oder nach Zuweisung zu einem ListIconGadget zu destroyen, siehe Beispiel

; PB 4.xx
; Beispielcode benötigt 4.30
; Windows Only
; Autor: Thomas <ts-soft> Schulz
; 21.04.2009

EnableExplicit

; ID ist die Gadgetnummer/konstante, item ist der eintrag, beginnend mit 0
Procedure GetListIconIcon(ID, item)
  Protected LVITEM.LV_ITEM
  Protected index, hIML, hIcon
  
  LVITEM\Mask   = #LVIF_IMAGE
  LVITEM\iItem  = item
  
  SendMessage_(GadgetID(ID), #LVM_GETITEM, 0, @LVITEM)
  
  index         = LVITEM\iImage
  hIML          = SendMessage_(GadgetID(ID), #LVM_GETIMAGELIST, #LVSIL_SMALL, 0)
  hIcon         = ImageList_GetIcon_(hIML, index, #ILD_TRANSPARENT)
  
  ProcedureReturn hIcon
EndProcedure

; Beispiel
Define hIcon

OpenWindow(0, #PB_Ignore, #PB_Ignore, 200, 190, "bla", #PB_Window_SystemMenu)
ListIconGadget(0, 0, 0, 200, 150, "test", 190)
AddGadgetItem(0, -1, "CDIcon", LoadImage(0, #PB_Compiler_Home + "Examples\Sources\Data\CdPlayer.ico"))
ImageGadget(1, 92, 160, 16, 16, 0)

hIcon = GetListIconIcon(0, 0)
SetGadgetState(1, hIcon)

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow

DestroyIcon_(hIcon)
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

sehr nützlich :allright:
Win11 x64 | PB 6.20
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

Allgemein wären ein par weitere PB-Befehle (auch wenn sie dann vielleicht teilweise nur auf einem OS laufen) nützlich, gibt noch so ein par Sachen die irgendwie fehlen. Z.B. Text ausrichten im Listicongadget (die api-lösung kenne ich, braucht ihr mich also nicht drauf hinweisen).
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

> Text ausrichten im Listicongadget
Ja, das wäre durchaus praktisch.

Ich hätte gerne eine funktion, die das Listicon doppelzeilig macht und in der
man dann die obere Zeile fett drucken kann
(für ersteres kenne ich auch den Code)
Win11 x64 | PB 6.20
Antworten