#MB_IconError laden?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

#MB_IconError laden?

Beitrag 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?)
(\/) (°,,,°) (\/)
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Es ist user32.dll :wink:

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.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Code: Alles auswählen

LoadIcon_(0, #IDI_ERROR)
Oder reicht das nicht? Braucht auch nicht freigegeben werden!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

THX für die Codes :allright: FluidBytes is optimal da ich das Icon eh auf 16x16 benutze...
(\/) (°,,,°) (\/)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

KeyKon hat geschrieben:THX für die Codes :allright: 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 :wink:
Zuletzt geändert von ts-soft am 18.04.2009 17:41, insgesamt 1-mal geändert.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag 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...)
(\/) (°,,,°) (\/)
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag 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.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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 ?
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag 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...
(\/) (°,,,°) (\/)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

@KeyKon
Haste irgendeinen Nicht MS-Style installiert?
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten