Meines hatte ich schon mal in "Anwendungen" vorgestellt, allerdings damals ohne Sourcecode.
Manche älteren und/oder kleineren Spiele sind nicht sehr flexibel im Hinblick auf ihre auflösung.
manche präsentieren sich stur in einem 640x480 Windowedscreen,
andere benutzen für ihren Fullscreen die Desktopauflösung,
und wieder andere bestehen schlichtweg drauf, dass der Desktop nur 256 farben haben soll.
Weil ich gerne mal ältere Games spiele, und keine Lust habe,
jedesmal manuell die Auflösung zu wechseln und nachher meine Icons wieder zu sortieren,
hab ich mir dieses kleine Tool gestrickt.
Hinweis:
nachdem man "Iconfy" gedrückt hat, hat man ein winziges Knöpfchen in der linken oberen Ecke,
das auch Sticky ist wenn diese Funktion aktiviert ist.
Damit kommt man von innerhalb eines Fullscreen-games wieder an den KGRS heran.
allerdings reagieren Fullscreen-Games unterschiedlich merkwürdig auf wechsel der Auflösung während der Laufzeit,
laut meiner erfahrung ist es besser, zuerst die Auflösung runterzusetzen, dann das game zu spielen,
und nach beendigen wieder die Auflösung zurückzusetzen.
Code: Alles auswählen
;*************************
;*** KGRS-TS
;***
;*** ResolutionSwitcher
;***
;*** Changes Desktop-Resolution
;*** without effekting the Icons
;***
;*** PB 4.02 - Win2K/XP
;*** Kaeru Gaman, 2007-03-23
;***
;*** thanks to DarkDragon for showing
;*** me the usage of this API-function
;*** thanks to ts-soft for
;*** additional improvement suggestions.
;*************************
EnableExplicit
Enumeration
#WinMain
#WinIcon
EndEnumeration
Enumeration
#FrameRes
#FrameCol
#ContRes
#ContCol
#OptRes6
#OptRes8
#OptRes10
#OptCol8
#OptCol16
#OptCol32
#ButExe
#ButRest
#ButIco
#ButStick
#ButOpen
#TextAbout
EndEnumeration
#Icon = 0
;*************************
Procedure Change_Desktop(Width.l, Height.l, Depth.l)
Define dmScreenSettings.DEVMODE
Define Check
dmScreenSettings\dmSize = SizeOf(dmScreenSettings)
dmScreenSettings\dmPelsWidth = Width
dmScreenSettings\dmPelsHeight = Height
dmScreenSettings\dmBitsPerPel = Depth
dmScreenSettings\dmFields = 262144 | 524288 | 1048576
Check = ChangeDisplaySettings_(@dmScreenSettings, 4)
If Check <> #DISP_CHANGE_SUCCESSFUL
ChangeDisplaySettings_(0,0)
MessageRequester("KGRS ERROR","Failed to Change Settings",#MB_ICONERROR)
EndIf
EndProcedure
Define About$ = " ** KGRS ** "
About$ + "(c) by Kaeru Gaman, 2007-03-23 ** "
About$ + "Programmed in PureBASIC ** "
About$ + "www.PureBasic.com"
Define EvID.l
Define GgID.l
Define EXIT.l = 0
Define Width.l = 800
Define Height.l = 600
Define Depth.l = 16
Define Sticky.l = 1
;*************************
OpenWindow(#WinMain,0,0,200,152,"KGRS")
CreateGadgetList(WindowID(#WinMain))
Frame3DGadget( #FrameRes, 4, 2, 92, 88, "Resolution")
ContainerGadget(#ContRes, 8, 18, 84, 66)
OptionGadget(#OptRes6 , 4, 0, 80, 24,"640x480")
OptionGadget(#OptRes8 , 4, 22, 80, 24,"800x600")
OptionGadget(#OptRes10, 4, 44, 80, 24,"1024x768")
CloseGadgetList()
Frame3DGadget( #FrameCol,104, 2, 92, 88, "Color Depth")
ContainerGadget(#ContCol,108, 18, 84, 66)
OptionGadget(#OptCol8 , 4, 0, 80, 24,"256Col")
OptionGadget(#OptCol16, 4, 22, 80, 24,"16bit")
OptionGadget(#OptCol32, 4, 44, 80, 24,"32bit")
CloseGadgetList()
ButtonGadget(#ButExe , 4, 96, 92, 24,"Apply")
ButtonGadget(#ButRest ,104, 96, 92, 24,"Restore")
ButtonGadget(#ButIco , 4,124, 92, 24,"Iconfy")
ButtonGadget(#ButStick,104,124, 92, 24,"Sticky",#PB_Button_Toggle)
OpenWindow(#WinIcon,0,0,5,5,"KGRS IconButton",#PB_Window_BorderLess)
CreateGadgetList(WindowID(#WinIcon))
ButtonGadget(#ButOpen,0,0,5,5,"")
;*************************
SetGadgetState(#OptRes8, 1)
SetGadgetState(#OptCol16, 1)
HideWindow(#WinIcon,1)
SetGadgetState(#ButStick, Sticky)
StickyWindow(#WinMain, Sticky)
StickyWindow(#WinIcon, Sticky)
;*************************
GadgetToolTip(#ButExe , "Apply chosen Settings to active Desktop")
GadgetToolTip(#ButRest , "Restore your standard Desktop Settings")
GadgetToolTip(#ButIco , "Shrink KGRS Window to IconButton")
GadgetToolTip(#ButStick, "Toggle Always-on-Top for KGRS Window and IconButton")
GadgetToolTip(#ButOpen , About$)
;**************************************************
Repeat
EvID = WaitWindowEvent()
GgID = EventGadget()
Select EvID
Case #PB_Event_Gadget
Select GgID
;*************************
Case #OptRes6
Width = 640 : Height = 480
Case #OptRes8
Width = 800 : Height = 600
Case #OptRes10
Width = 1024 : Height = 768
;*************************
Case #OptCol8
Depth = 8
Case #OptCol16
Depth = 16
Case #OptCol32
Depth = 32
;*************************
Case #ButExe
Change_Desktop(Width, Height, Depth)
Case #ButRest
ChangeDisplaySettings_(0,0)
Case #ButStick
Sticky = GetGadgetState(#ButStick)
StickyWindow(#WinMain, Sticky)
StickyWindow(#WinIcon, Sticky)
Case #ButIco
HideWindow(#WinMain,1)
HideWindow(#WinIcon,0)
Case #ButOpen
HideWindow(#WinMain,0)
HideWindow(#WinIcon,1)
EndSelect
Case #PB_Event_CloseWindow
EXIT = 1
EndSelect
Until EXIT = 1
End
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.