Toon posts:

[delphi] - beeldscherm resolutie aanpassen

Pagina: 1
Acties:
  • 134 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hi,

ik ben bezig met een programma. Het programma zet in het begin de resolutie meteen op 1024x768. Maar nu verandert hij ook meteen de hertz naar 60, dit moet dus niet. Is het mogelijk om de frequentie op 75 hertz te zetten met delphi?

Hieronder mijn stukje code om de resolutie te veranderen

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
var
  OldWidth, OldHeight: integer;

function SetScreenResolution(Width, Height: integer): Longint;
var
  DeviceMode: TDeviceMode;
begin
  with DeviceMode do begin
    dmSize := SizeOf(TDeviceMode);
    dmPelsWidth := Width;
    dmPelsHeight := Height;
    dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;
  end;
  Result := ChangeDisplaySettings(DeviceMode, CDS_UPDATEREGISTRY);
end;


procedure TForm1.FormActivate(Sender: TObject);
begin
  OldWidth := GetSystemMetrics(SM_CXSCREEN);
  OldHeight := GetSystemMetrics(SM_CYSCREEN);
  SetScreenResolution(1024, 768);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  SetScreenResolution(OldWidth, OldHeight);
end;

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

BAH! Sorry....

Tenzij een gebruiker specifiek vraagt om het verzetten van de resolutie is dit absoluut NOT DONE. Elke software die mijn resolutie aanpast zonder dat ik daar om gevraagd heb, gaat linea recta van mijn PC af, hoe gaaf het pakket ook is.
Zorg ervoor dat je pakket draait op alle resoluties die je kunt bedenken. Tenzij je natuurlijk een game aan het maken bent, dan heb ik niks gezegd ;)

Wat doe je bijvoorbeeld als je een scherm hebt die deze resolutie niet aankan? De kans daarop is klein, maar een 15" scherm is niet echt meer leesbaar met die resolutie. En al helemaal niet als je ook nog eens de frequentie omhoog gaat schroeven...
Dit is op te lossen door eerst de settings te proberen met behulp van CDS_TEST. Ook dit is redelijk simpel in de helpfile te vinden.

Wat betreft je vraag: de search hier op GoT levert al heel wat goede oplossing en ook google (groups) is een bron van inspiratie...

Edit:
En de help geeft al aan dat je bij ChangeDisplaySettings ook de frequency kunt meegeven.... Hmm. Is dat niet de frequentie?

code:
1
2
3
4
5
6
7
Member                 Meaning

dmBitsPerPel           Bits per pixel
dmPelsWidth            Pixel width
dmPelsHeight           Pixel height
dmDisplayFlags         Mode flags
dmDisplayFrequency     Mode frequency

[ Voor 50% gewijzigd door OZ-Gump op 05-06-2003 14:18 ]

My personal website


Verwijderd

Dat is een windows-eigen iets. Windows pakt de refresh-rate welke voor die resolutie als standaard staat ingesteld. Dit is in het register te vinden, en er zijn ook tools waarmee je dit in een keer goed zet. Powerstrip bv.

In de search is hierover bergen met info te vinden, even zoeken dus..

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

@ hezik: is een parameter voor ChangeDisplaySettings. En dus redelijk simpel aan te passen door de juiste frequentie aan TDeviceMode toe te voegen...

My personal website


Verwijderd

OZ-Gump schreef op 05 June 2003 @ 14:16:
@ hezik: is een parameter voor ChangeDisplaySettings. En dus redelijk simpel aan te passen door de juiste frequentie aan TDeviceMode toe te voegen...
Dat zou ik juist niet doen. Je hebt nl. kans dat je dan een ongeldige frequentie pakt (bv. op een systeem die dat niet ondersteund). Ik zou het register doorzoeken op geldige frequenties bij die resolutie, en dan de hoogste pakken.

Of desnoods tijdens de install de user zelf laten selecteren, eventueel aan de hand van een previeuw.

Zomaar een frequentie hard-coded selecteren zou ik iig. niet aan beginnen.

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Zomaar een frequentie hard-coded selecteren zou ik iig. niet aan beginnen.
Ik zou in geen enkel geval resoluties aanpassen ;). Behalve bij games, maar zelfs dan laat je dit aan de gebruiker over.

Als je kijkt naar mijn eerste post zie je ook dat ik een oplossing geef om te kijken of een resolutie en frequentie wel goed gaat, door middel van CDS_TEST in plaats van meteen CDS_UPDATEREGISTRY te doen. De eerste kijkt namelijk of dat goedgaat, terwijl de tweede meteen alles wegschrijft. Als je dat combineert met een loopje ben je er ook... Maar nogmaals, mijn ding is het niet, software die de resolutie aanpast...

My personal website


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 17-12-2025

curry684

left part of the evil twins

Wat doe je bijvoorbeeld als je een scherm hebt die deze resolutie niet aankan? De kans daarop is klein, maar een 15" scherm is niet echt meer leesbaar met die resolutie. En al helemaal niet als je ook nog eens de frequentie omhoog gaat schroeven...
En een gemiddeld 14" scherm (ja die bestaan nog) blaas je er mee op, not to mention de 10" zwart/wit schermpjes die in serverracks nog wel eens gebruikt worden.

De MS Design Guidelines verbieden expliciet om resoluties ongevraagd aan te passen, en ik wil je dan ook dringend aanraden dit noooooooit te doen. Bij mij vliegt het ook linea recta de Recycle Bin in.

Professionele website nodig?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01-04 16:34

.oisyn

Moderator Devschuur®

Demotivational Speaker

offtopic:
gebruik jij dat? Bij mij doet het del knopje gewoon direct verwijderen ipv naar de recycle bin ;)

Oh, en dan is er nog de situatie op mijn school bijvoorbeeld, waar de docent halfblind is en de 17" monitoren op 1024x768 draaien met een megagroot font, terwijl je als gebruiker niet de rechten hebt om dat aan te passen.
Gelukkig is VC++ ook geinstalleerd en is het dus relatief simpel om de resolutie te wijzigen dmv een simpele systemcall :Y)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 17-12-2025

curry684

left part of the evil twins

offtopic:
sterker nog: ik heb zelfs via Norton Antivirus de mega protected recycle bin die zonodig terug kan halen na permanent deletion. Echter ik ben volledig gewend een file te deleten met shift+del als ie echt weg mag, en ik heb deletion confirmations wel uitgezet. Ik heb dus iedere keer de keuze of ie al of niet de recycle bin in gaat. :)

Professionele website nodig?


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 23:30

Tomatoman

Fulltime prutser

Een suggestie: zullen we voortaan alle vragen over het aanpassen van schermresoluties gaan boycotten? Programma's die dat doen zijn vies en onzedelijke code is op GoT niet gewenst. :)

Een goede grap mag vrienden kosten.


  • CyeZ
  • Registratie: September 2001
  • Laatst online: 10-09-2025

CyeZ

Vroem vroem!!!

lijkt me nogal wat overdreven. Wellicht is het voor een kleine game, als zal iemand die een spel kan schrijven ook wel code kunnen schrijven om de resolutie te veranderen. Of wellicht wil iemand zoiets weten om een kleine utility te schrijven waarmee hij makkelijk naar een bepaalde resolutie kan schakelijk zonder elke keer eerst helemaal naar het control panel te hoeven gaan.

[18:54] <Prammenhanger> |HunterPro|eet
[18:55] <Prammenhanger> lijkt best op
[18:55] <Prammenhanger> |HunterProFeet


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 23:30

Tomatoman

Fulltime prutser

CyeZ schreef op 05 June 2003 @ 22:27:
lijkt me nogal wat overdreven.
Damn, ben ik weer die :+ vergeten in mijn posting.

Een goede grap mag vrienden kosten.


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 06-03 20:19

_Thanatos_

Ja, en kaal

Wellicht is het voor een kleine game
Dan nog niet. Alleen de resolutie via DirectDraw aanpassen, maar daar wordt duidelijk niet om gevraagd. Als je de resolutie van de gewone desktop gaat aanpassen, wordt ongevraagd de plaats van al je icoontjes vernaggelt. Als de gebruiker dat zelf doet, dikke bult dan, maar als een programma dat voor mij doet omdat dat "handig" is ofzo, dan kieper ik het gelijk weg en gaat er onmiddelijk een boze klaagmail naar de maker.

/edit
Dan zijn er ook nog monitor op maaar 1 resolutie op 1 frequentie draaien. Mijn TFT draait alleen op 1280x1024@60Hz (0Hz dus eigenlijk ;) maar dat terzijde). Andere resoluties zien er brak uit door de te hoge signaalfrequentie of door interleaving.

[ Voor 23% gewijzigd door _Thanatos_ op 06-06-2003 03:08 ]

日本!🎌


Verwijderd

Topicstarter
Ok ik ben een stukje verder met mijn code. Maar nu een andere vraag. Hoe kan ik de frequentie opvragen die de gebruiker normaal (standaard) heeft? Net zoals ik doe bij de oude resolutie van de gebruiker.

code:
1
2
OldWidth := GetSystemMetrics(SM_CXSCREEN);
OldHeight := GetSystemMetrics(SM_CYSCREEN);


Is in de functie GetSystemMetrics ook iets om de frequentie op te vragen?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01-04 16:34

.oisyn

Moderator Devschuur®

Demotivational Speaker

_Thanatos_ schreef op 06 juni 2003 @ 03:05:
Dan nog niet. Alleen de resolutie via DirectDraw aanpassen, maar daar wordt duidelijk niet om gevraagd.
en hoe denk je dat niet-DirectX apps de resolutie veranderen dan? Denk hierbij aan OpenGL of gewoon GDI games. Juist! Met ChangeDisplaySettings ()

Maar goed, jij zal die wel niet draaien thuis, aangezien jij ze toch wegkiepert :+
Verwijderd schreef op 06 juni 2003 @ 17:54:
Ok ik ben een stukje verder met mijn code. Maar nu een andere vraag. Hoe kan ik de frequentie opvragen die de gebruiker normaal (standaard) heeft? Net zoals ik doe bij de oude resolutie van de gebruiker.

code:
1
2
OldWidth := GetSystemMetrics(SM_CXSCREEN);
OldHeight := GetSystemMetrics(SM_CYSCREEN);


Is in de functie GetSystemMetrics ook iets om de frequentie op te vragen?
Al eens in de MSDN gekeken?
Of bij het "see also" gedeelte van ChangeDisplaySettings ()?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Sorry hoor, ENORME zoekvraag. Binnen elf seconden zoeken gevonden. En dat was inclusief opstarten van Delphi 7 :/

My personal website

Pagina: 1