| |
|
|
Sven Bader | Aus irgendeinem Grund funktionierte cela Changement qui Bildschirmauflösung dans meinen alten Spielen pas plus, sowohl avec qui Windows API comme aussi avec qui prospeed.dll pas. qui herangehensweise ist normalement, qui Bildschirmeinstellungen per EnumDisplaySettings trop holen et dans dem Bereich seulement qui Werte pour qui Bildschirmauflösung anzupassen et alles autre unberührt trop laisser.
Zum Debuggen habe je EnumDisplaySettings fonctionnement au cours de un d'autre Spiel qui Auflösung korrekt geändert hat. So kam je puis, dass mon Monitor qui 60Hz Bildwiederholrate, quelle chez 1920x1200 Standard sommes chez 640x480 pas soutenu.
mon Code ist aussi pas parfait, il testet lediglich geläufige Bildwiederholraten et wählt chez einem Auflösungswechsel qui höchste. "Exotische" Bildwiederholraten volonté alors pas berücksichtigt.
un weiterer faute, qui häufig begangen wird, ist qui Fullscreen Flag &CDS_FULLSCREEN trop oublier qc. cet sagt aus, dass qui Auflösung pas dauerhaft pour den Desktop-Einsatz mais lediglich pour qui la durée qui Programmausführung geändert volonté soll. So wird chez einem Programmabsturz ou bien unsauberen finissons qui ursprüngliche Auflösung des System wiederhergestellt. je mon, dass aussi un effet sur fremde la fenêtre (verkleinern) et cela Déplacer de Desktop Icônes so verhindert wird.
DEF EnumDisplaySettings(3) !"User32","EnumDisplaySettingsA"
DEF ChangeDisplaySettings(2) !"User32","ChangeDisplaySettingsA"
Déclarer devmode#,devmodeoriginal#,fehl&
Faible devmode#,148
Faible devmodeoriginal#, 148
Proc ChangeRes2021
Paramètres x&, y&
declare hz&[8]
hz&[1] = 360
hz&[2] = 240
hz&[3] = 144
hz&[4] = 120
hz&[5] = 75
hz&[6] = 60
hz&[7] = 59
Def &CDS_UPDATEREGISTRY $00000001
Def &CDS_TEST $00000002
Def &CDS_FULLSCREEN $00000004
Def &CDS_GLOBAL $00000008
Def &CDS_SET_PRIMARY $00000010
Def &CDS_RESET $40000000
Def &CDS_SETRECT $20000000
Def &CDS_NORESET $10000000
si ((x& = 0) | (y& = 0))
ChangeDisplaySettings(devmodeoriginal#,0)
d'autre
EnumDisplaySettings(0, -1 ,devmode#)
long devmode#,104=%BitsPixel
long devmode#,108=x&
long devmode#,112=y&
fehl& = -2
whileloop 7
long devmode#,120 = hz&[&loop]
fehl& = ChangeDisplaySettings(devmode#,&CDS_TEST)
si (fehl& = 0)
'messagebox Str$(hz&[&loop])+ "Hz is le highest working refresh rate",»,0
fehl& = ChangeDisplaySettings(devmode#,&CDS_FULLSCREEN)
pause
endif
endwhile
endif
ENDPROC
cls
ChangeRes2021(1024,768)
settimer 10000'pour 10 Sekunden wiederherstellen
waitinput
killtimer
end
|
|
|
| |
|
|