Deutsch
Quelltexte/ Codesnippets

Erweiterung Funktion Imagelist

 

Jac
de
Lad
Hier mal ein paar Funktionen, die Rolands neue Imagelisten um das erweitern, was mir momentan noch fehlt. Sollte ab XProfan 1 Sub 11 funktionieren. Es gibt noch mehr Imagelist-Funktionen, aber das sind die wichtigsten. Wenn jemand was vermisst, bitte laut schreien.
KompilierenMarkierenSeparieren
Def ImageList_GetCount(1) !comctl32,ImageList_GetCount
Def ImageList_Duplicate(1) !comctl32,ImageList_Duplicate
Def ImageList_Copy(5) !comctl32,ImageList_Copy
Def ImageList_Destroy(1) !comctl32,ImageList_Destroy
Def ImageList_Remove(2) !comctl32,ImageList_Remove

subproc Imagelist.Remove

    Löscht ein Bildchen aus einer Imagelist
    Parameters handle&,pos%
    Return Imagelist_Remove(handle&,pos%)

endproc

subproc Imagelist.RemoveAll

    Löscht ein Bildchen aus einer Imagelist
    Parameters handle&

    while 0,GetCount(Imagelist(GetCount,handle&))-1

        Imagelist_Remove(handle&,&Loop)

    endwhile

endproc

subproc Imagelist.Destroy

    Entfernt eine Imagelist
    Parameters handle&
    Return Imagelist_Destroy(handle&)

endproc

subproc Imagelist.Copy

    Kopiert ein Bildchen mit Position pos1& von il& nach Position pos2&
    Flags:
     $0=Kopieren
     $1=Beide Bildchen vertauschen
    Ergebnis: <>0 -> Erfolg
    Parameters il&,pos1&,pos2&,flags&
    Return ImageList_Copy(il&,il&,pos2&,pos1&,flags&)

endproc

subproc Imagelist.XCopy

    Kopiert ein Bildchen mit Position pos1& von il1& nach il2& an Position pos2&
    Flags:
     $0=Kopieren
     $1=Beide Bildchen vertauschen
    Ergebnis: <>0 -> Erfolg
    Parameters il1&,il2&,pos1&,pos2&,flags&
    Return ImageList_Copy(il2&,il1&,pos2&,pos1&,flags&)

endproc

subproc Imagelist.Duplicate

    Kopiert eine Imagelist in eine neu erzeugte
    Ergebnis: Handle der neuen Imagelist oder 0
    Parameters handle&
    Return Imagelist_Duplicate(handle&)

endproc

subproc Imagelist.GetCount

    Ermittelt die Anzahl der Bilderchen in einer Imagelist
    Parameters handle&
    Return Imagelist_GetImageCount(handle&)

endproc


Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
03.01.2008  
 




RGH
Sehr schön!

Zwei kleine Anmerkungen:

ImageList(Destroy, handle&) gibt es schon - glaube ich* - , fehlt nur noch in der Anleitung.
ImageList(GetCount, handle&) ist überflüssig, da dies bereits mit GetCount(handle&) erledigt wird.

Gruß
Roland

* ich bin mir im Moment nicht sicher, ob ich es gestern vor oder nach Packen des Subscriptionspaketes eingebaut habe.
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
03.01.2008  
 




Jac
de
Lad
Ah, ja das GetCount habe ich großzügig übersehen, hehehe.

Habs nicht probiert, aber sollte unbedingt rein, da DestroyWindow() (und auch DeleteObject) nicht greifen (denke ich mal, zumal, wenns so ne exklusive Funktion dafür gibt).

Vielleicht willst du ja die eine oder andere (oder alle ) Funktion(en) noch einbauen, damit wäre das Imagelist-Paket abgerundet und es sollten eigentlich keine Wünsche offen bleiben. Auch die Defs würde entfallen, was mir angenehm rüberkommen würde.

Vielleicht wäre es noch sinnvoll, wenn man für die Imagelist die Farbtiefe festlegen könnte. Es gibt da so einige Flags (ich bin mir sicher, du weißt das schon).

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
03.01.2008  
 




Jac
de
Lad
@Roland: Baust du noch was ein von wegen Imagelist an Gridbox plus Funktion zum Bildzuweisen (am besten gleich beim AddString())?? Ansonsten poste ich das gleich noch.

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
03.01.2008  
 




Frank
Abbing
Wie gesagt, die neuen Imagelisten-Funktionen halte ich für relativ sinnlos, da sie kaum Vorteile gegenüber der einfach gehaltenen API haben.
Sinnvoller wäre es, Imagelisten schnell befüllen zu können, z.B. mit den Icons einer kompletten Dll (shell32.dll) oder noch besser mit der Systemimageliste. Aber lass dir keine billige (und unkomplette) Kopie davon andrehen, sondern bitte nur den originalen Handle.
Wenn dus nicht hinbekommst, kann ich dir gerne mit Code aushelfen.
 
03.01.2008  
 




Jac
de
Lad

KompilierenMarkierenSeparieren
So, das sollte alles sein. Der Rest ist für den Otto-Normal-Profaner nicht wichtig.

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
03.01.2008  
 




Jac
de
Lad
Nochmal Dank an Andreas Miethe, der damit mein Transparenzproblem gelöst hat:
KompilierenMarkierenSeparieren
 $H windows.ph
 $H commctrl.ph
 $H ShellApi.ph

subproc imagelist.setbkcolor

    parameters il&,color& ~CLR_NONE=transparenter Hindergrund
    Return ~ImageList_SetBkColor(IL&,color&)

endproc


Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
07.01.2008  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

7.346 Betrachtungen

Unbenanntvor 0 min.
H.Brill07.11.2023
kustg23.05.2019
AndreasS26.12.2018
Ernst25.04.2016
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

Jac de Lad (5x)
Frank Abbing (1x)
RGH (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie