Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 249164 (10600)
  Suchen
 Zurück zur Übersicht
 AutorThema: OverlayImage
Uwe Beisler
Datum:18.02.02 09:05 Antwortenals Email verschicken (uwe.beisler@t-online.de) 



Hallo,

ich sitze wohl mal wieder auf der Leitung.

Es geht darum, Status-Informationen dynamisch in ein Icon einzublenden.
Da es sehr viele Icons sind muß die Verarbeitung schnell sein.
Theoretisch müsste es so gehen :

def ImageList_SetOverlayImage(3) !"COMCTL32","ImageList_SetOverlayImage"
ImageList_SetOverlayImage(Imagelist&,2,1)

' 256 = 1<< 8 (INDEXTOOVERLAYMASK)
ImageList_Draw(Imagelist&,1,%hdc,100,100,256)

Mache ich da einen Fehler oder habe ich etwas vergessen ?

Danke im voraus !

Uwe


Uwe ''Pascal'' Niemeier
Datum:20.02.02 11:53 Antwortenals Email verschicken (Pascalxd@owl-online.de) 


Hallo Uwe!

Das sollte eigendlich klappen (tut es bei mir auch).
Was passiert denn genau bzw. was passiert nicht?

Hier noch eine Demo für die, die's sonst noch interessiert:

window 30,30-200,200

def LoadIcon(2) !"USER32","LoadIconA"
def GetModuleHandle(1) !"KERNEL32","GetModuleHandleA"
def ImageList_Create(5) !"COMCTL32","ImageList_Create"
def ImageList_AddIcon(2) !"COMCTL32","ImageList_AddIcon"
def ImageList_SetOverlayImage(3) !"COMCTL32","ImageList_SetOverlayImage"
def ImageList_Draw(6) !"COMCTL32","ImageList_Draw"
def ImageList_Destroy(1) !"COMCTL32","ImageList_Destroy"

declare IcoList&,Shell&,Shell$
IcoList&=ImageList_Create(32,32,1,1,0)'-----------Parameter 1+2: Grösse der Icons

Shell$="Shell32"
Shell&=GetModuleHandle(addr(Shell$))
ImageList_AddIcon(IcoList&,LoadIcon(Shell&,30))'--Verknüpfungspfeile laden
ImageList_AddIcon(IcoList&,LoadIcon(Shell&,31))

ImageList_AddIcon(IcoList&,LoadIcon(0,32512))'--SystemIcons laden
ImageList_AddIcon(IcoList&,LoadIcon(0,32513))

ImageList_SetOverlayImage(IcoList&,0,1)'--2.Parameter: Icon aus List
ImageList_SetOverlayImage(IcoList&,1,3)'--3.Parameter: Ziel-Index (1-basiert!!)

ImageList_Draw(IcoList&,2,%hdc,10,50,256*1)'--2.Parameter: BasisIcon
ImageList_Draw(IcoList&,3,%hdc,50,50,256*3)'--6.Parameter: Index des Overlay-Icons * $100

case IcoList&:ImageList_Destroy(IcoList&)
waitkey

HTH
Pascal


Uwe Beisler
Datum: 21.02.02 13:21 Antwortenals Email verschicken (uwe.beisler@t-online.de) 


Hallo Pascal,

einmel mehr : DANKE !

Mein Fehler waren unmaskierte Icons. Für das Overlay brauche ich aber eine Maske. Nun läuft es auch bei mir.
Allerdings habe ich gemerkt, daß mir das Overlay nur wenig nutzt, denn ich muß 54 Status-Informations-Kombinationen (4 Infos, 1 mit 2 möglichen Zuständen und 3 mit 3 = 2*3*3*3) auf der rechten Seite des Icon abbilden. Es stehen aber nur 15 Overlays zur Verfügung. Nun muß ich es wohl in Richtung Icon auslesen, Icon modifizieren und Icon in ImageList schreiben probieren. Es sei denn jemand kennt einen Weg das Icon in der ImageList direkt zu bearbeiten. Aber vermutlich ist die geschützt.

Uwe


 Zurück zur Übersicht