Hallo Leute,
bastel gerade an meinem eigenen Messagerequester und wollte jetzt, da ich das Rad ja nicht neu erfinden will, wie beim Purebasic Messagerequester die API-Konstanten (#MB_ICONERROR, #MB_ICONINFORMATION, ect.) verwenden.
Wie kann ich die Icons so laden, dass sie dann in einem ImageGadget angezeigen lassen kann?
Gruß
Scarabol
API Konstanten in eigenem Messagerequester?
API Konstanten in eigenem Messagerequester?
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea
PB-V: 4
WinXP
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea
PB-V: 4
WinXP
Code: Alles auswählen
LoadIcon_(0, #IDI_QUESTION)
LoadIcon_(0, #IDI_EXCLAMATION)
LoadIcon_(0, #IDI_HAND)
LoadIcon_(0, #IDI_ASTERISK)
- 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
Wenn es keine Konstanten gibt, reicht es wenn man weiß in welcher DLLScarabol hat geschrieben:Kann ich das mit allen Konstanten machen, die auch unter #MB_ funktionieren?
unter welcher ResourceID das Icon erreichbar ist.
Die Icons sind in der "user32.dll", als 101 - 104 enthalten.
Code: Alles auswählen
hModule = OpenLibrary(0, "user32.dll")
Dim Icons(3)
For i = 0 To 3
Icons(i) = LoadIcon_(hModule, i + 101)
Next
If OpenWindow(0, #PB_Ignore, #PB_Ignore, 50, 200, "")
If CreateGadgetList(WindowID(0))
For i = 0 To 3
ImageGadget(i, 10, i * 40 + 10 , 32, 32, Icons(i))
Next
EndIf
EndIf
While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend
CloseLibrary(0)

PS: ResourceHacker kann ich nur jedem empfehlen, der Resourcen nutzen möchte.
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Es geht auch ohne ResourceHackerts-soft hat geschrieben: PS: ResourceHacker kann ich nur jedem empfehlen, der Resourcen nutzen möchte.

Code: Alles auswählen
#RT_GROUP_ICON = 14
#WindowHeight = 100
#WindowWidth = 180
NewList ResNameList.L()
Procedure.l EnumResNameProc(ResHandle.L, ResType.L, ResName.L, AppParam.L)
Shared ResNameList.S()
AddElement(ResNameList())
ResNameList() = ResName
ProcedureReturn #True
EndProcedure
Procedure.L EnumResTypeProc(ResHandle.L, ResType.L, AppParam.L)
If ResType = #RT_GROUP_ICON
EnumResourceNames_(ResHandle, ResType, @EnumResNameProc(), 0)
EndIf
ProcedureReturn #True
EndProcedure
LibName.S = "User32.DLL"
LibHandle.L = LoadLibrary_(@LibName)
If LibHandle = 0
MessageRequester("Fehler", "Die Windows-Bibliothek " + LibName + " konnte nicht geladen werden!", #MB_ICONERROR)
End
EndIf
EnumResourceTypes_(LibHandle, @EnumResTypeProc(), 0)
If OpenWindow(1, 0, 0, #WindowWidth, #WindowHeight, LibName, #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(1))
ListIconGadget(1, 5, 6, #WindowWidth - 12, #WindowHeight - 12, "", 60)
ChangeListIconGadgetDisplay(1, 0)
ForEach ResNameList()
IconHandle = LoadIcon_(LibHandle, ResNameList())
If IconHandle
AddGadgetItem(1, i + 1, "#" + StrU(ResNameList(), #Long), IconHandle)
i = i + 1
EndIf
Next
EndIf
EndIf
While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend
FreeLibrary_(LibHandle)
Im englischen Forum habe ich übrigens auch schon einmal ein Beispiel gezeigt, mit dem man alle in einer Datei (z.B. Exe, DLL) als Resource gespeicherten Cursor anschauen kann:
http://www.purebasic.fr/english/viewtop ... 3&start=35
- 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
@Shardik
Schönes Beispiel
Vielleicht könntest Du sowas wie einen ResourceViewer für die PB-IDE oder
jaPBe schreiben?
Schönes Beispiel

Vielleicht könntest Du sowas wie einen ResourceViewer für die PB-IDE oder
jaPBe schreiben?
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
