| |
|
|
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. KompilierenMarkierenSeparierenDef 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. |
|
|
| |
|
|
|
Jac de Lad | KompilierenMarkierenSeparierenDef ImageList_Replace(4) !comctl32,ImageList_Replace
Def ImageList_ReplaceIcon(4) !comctl32,ImageList_ReplaceIcon
Def ImageList_SetIconSize(3) !comctl32,ImageList_SetIconSize
subproc Imagelist.Replace
Ersetzt ein Bildchen einer Imagelist
Parameters handle&,pos%,neuhandle&
Return Imagelist_Replace(handle&,pos%,neuhandle&,0)
endproc
subproc Imagelist.Replaceicon
Ersetzt ein Bildchen einer Imagelist mit einem Icon oder Cursor
Parameters handle&,pos%,neuhandle&
Return Imagelist_ReplaceIcon(handle&,pos%,neuhandle&,0)
endproc
subproc Imagelist.SetIconSize
Setzt eine neue Größe für die Bilderchen in einer Imagelist und löscht sie komplett (die alten Bilder werde NICHT übernommen!)
Parameters handle&,x%,y%
Return Imagelist_SetIconSize(handle&,x%,y%)
endproc
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 | |
|
| 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 ▲ |
|
|
|