Seite 1 von 2
#MB_IconError laden?
Verfasst: 18.04.2009 15:13
von KeyKon
Wie kann ich denn dieses Icon als Image laden?
(Ich nehme an es ist in der Shell32.dll, aber wie finde ich am einfachsten den Index raus?)
Verfasst: 18.04.2009 16:05
von Fluid Byte
Es ist user32.dll
Außerdem musst du die Größe angeben die du laden willst. Es handelt sich hier um ein Multi-Icon und nicht ein gewöhnliches Bitmap:
Code: Alles auswählen
OpenWindow(0,0,0,320,240,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
OpenLibrary(0,"user32.dll")
hbmErrorIcon1 = LoadImage_(LibraryID(0),"#103",#IMAGE_ICON,16,16,0)
hbmErrorIcon2 = LoadImage_(LibraryID(0),"#103",#IMAGE_ICON,32,32,0)
hbmErrorIcon3 = LoadImage_(LibraryID(0),"#103",#IMAGE_ICON,48,48,0)
CloseLibrary(0)
StartDrawing(WindowOutput(0))
DrawImage(hbmErrorIcon1,20,40)
DrawImage(hbmErrorIcon2,55,30)
DrawImage(hbmErrorIcon3,105,22)
StopDrawing()
DestroyIcon_(hbmErrorIcon1)
DestroyIcon_(hbmErrorIcon2)
DestroyIcon_(hbmErrorIcon3)
While WaitWindowEvent() ! #PB_Event_CloseWindow : Wend
PS: Den Index (= Resource ID) kannst du mit "XNResourceEditor" oder "Resource Hacker" herrausfinden.
Verfasst: 18.04.2009 16:26
von ts-soft
Oder reicht das nicht? Braucht auch nicht freigegeben werden!
Verfasst: 18.04.2009 17:12
von KeyKon
THX für die Codes

FluidBytes is optimal da ich das Icon eh auf 16x16 benutze...
Verfasst: 18.04.2009 17:32
von ts-soft
KeyKon hat geschrieben:THX für die Codes

FluidBytes is optimal da ich das Icon eh auf 16x16 benutze...
Da hab ich dann doch noch einen kleinen Verbesserungsvorschlag:
Code: Alles auswählen
OpenWindow(0,0,0,320,240,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
hbmErrorIcon1 = LoadImage_(GetModuleHandle_("user32.dll"), "#103", #IMAGE_ICON, 16, 16, #LR_LOADTRANSPARENT | #LR_SHARED)
StartDrawing(WindowOutput(0))
DrawImage(hbmErrorIcon1,20,40)
StopDrawing()
While WaitWindowEvent() ! #PB_Event_CloseWindow : Wend
Braucht nicht freigegeben werden, das Icon ist shared zu der sowieso von
der Application geladenen user32.dll und wird mit Programmende autom.
destroyed.
Gruß
Thomas
// edit:
so siehts schöner aus

Verfasst: 18.04.2009 17:36
von KeyKon
Komisch, aber der Code lädt das Icon bei mir in 32*32...
(Also dein Beispiel funktioniert, aber in mein Programm eingebunden komischerweise nicht mehr...)
Verfasst: 18.04.2009 17:48
von edel
Was passiert denn wenn du LR_SHARED entfernst? Mit LR_SHARED wird das
erste gefundene Icon, passend zur Nummer, unabhaengig der Groesse
zurueck gegeben.
Verfasst: 18.04.2009 17:55
von ts-soft
edel hat geschrieben:Was passiert denn wenn du LR_SHARED entfernst? Mit LR_SHARED wird das
erste gefundene Icon, passend zur Nummer, unabhaengig der Groesse
zurueck gegeben.
Dann muß ich es wieder selber destroyen, hab ich überlesen, das er dann
die größe ignoriert. Also einfach das Flag wieder entfernen und das Icon am
ende mit DestroyIcon_() freigeben.
Merkwürdigerweise erscheint es bei mir in 16 x 16 ?
Verfasst: 18.04.2009 18:26
von KeyKon
Wie schon gesagt, bei mir (in deinem Beispiel) auch...
Aber wenn ich das ganze in mein Prog einbaue wo ich das Icon in einem TreeGadget verwende sieht man nur das obere linke viertel vom 32*32 icon...
Verfasst: 18.04.2009 19:14
von ts-soft
@KeyKon
Haste irgendeinen Nicht MS-Style installiert?