Code: Select all
#RT_GROUP_CURSOR = 12
NewList ResNameList.S()
Procedure.l EnumResNameProc(ResHandle.L, ResType.L, ResName.L, AppParam.L)
Shared ResNameList.S()
AddElement(ResNameList())
ResNameList() = "#" + Str(ResName)
ProcedureReturn #True
EndProcedure
Procedure.L EnumResTypeProc(ResHandle.L, ResType.L, AppParam.L)
If ResType = #RT_GROUP_CURSOR
EnumResourceNames_(ResHandle, ResType, @EnumResNameProc(), 0)
EndIf
ProcedureReturn #True
EndProcedure
LibName.S = "MSPaint.Exe"
LibHandle.L = LoadLibrary_(@LibName)
If LibHandle = 0
MessageRequester("Error", "Loading of " + LibName + " failed!", #MB_ICONERROR)
End
EndIf
EnumResourceTypes_(LibHandle, @EnumResTypeProc(), 0)
CreateImage(0, 135, 57)
StartDrawing(ImageOutput(0))
Box(0, 0, 135, 57, #White)
StopDrawing()
OpenWindow(0, 0, 0, 160, 100, "Display lib's cursors", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateGadgetList(WindowID(0))
ImageGadget(0, 10, 10, 135, 57, ImageID(0), #PB_Image_Border)
ButtonGadget(1, 10, 75, 140, 20, "Switch to another cursor")
ForEach ResNameList()
CursorHandle = LoadImage_(LibHandle, ResNameList(), #IMAGE_CURSOR, 0, 0, #LR_DEFAULTCOLOR)
If CursorHandle = 0
MessageRequester("Error", "Loading of cursor " + ResNameList() + " from " + LibName + " failed!", #MB_ICONERROR)
FreeLibrary_(LibHandle)
End
EndIf
SetClassLong_(GadgetID(0), #GCL_HCURSOR, CursorHandle)
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
If EventGadget() = 1
Break
EndIf
Case #PB_Event_CloseWindow
DestroyIcon_(CursorHandle)
FreeLibrary_(LibHandle)
End
EndSelect
ForEver
DestroyIcon_(CursorHandle)
Next
FreeLibrary_(LibHandle)