Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 249164 (10600)

| Suchen
| Zurück zur Übersicht

Autor | Thema: OverlayImage
Uwe Beisler
| Datum:18.02.02 09:05 (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 (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 (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