Opløsning ?

Tags:    delphi

Hej udviklere,

Hvordan får jeg mit program til f.eks at køre i opløsning 1024x768 ?


på forhånd tak


mvh

Anders



10 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Copy, cut n' paste. :)

Du skal bare declare proceduren og så ellers kalde den.

Why Aren't You Coding ?
Aaangel



nu er mine muligheder for at teste om det her virker ret begrænsede, da jeg bruger bærbar. men her er en ny procedure men et ekstra parameter og een rettelse i forhold til den gamle. jeg ved som sagt ikke om det virker.
men prøv.
Fold kodeboks ind/udKode 




Hej udviklere,

Hvordan får jeg mit program til f.eks at køre i opløsning 1024x768 ?


på forhånd tak


mvh

Anders


<pre>var
Form1: TForm1;
DeskDC: HDC;
devmode, oldmode: TDeviceModeA;
tal: integer;

// Sætter opløsningen til 1024 x 768 med 24-bit farver:
// Hvis den ikke skal ændre farverne skriver du GetDeviceCaps(DeskDC,BITSPIXEL) i stedet for 24.
procedure TForm1.Button1Click(Sender: TObject);
begin
DeskDC := GetDC(0);
oldmode.dmBitsPerPel := GetDeviceCaps(DeskDC,BITSPIXEL);
oldmode.dmPelsWidth := screen.Width;
oldmode.dmPelsHeight := screen.Height;
oldmode.dmFields := DM_BITSPERPEL or DM_PELSWIDTH or
DM_PELSHEIGHT;
oldmode.dmSize:=sizeof(oldmode);

devmode.dmBitsPerPel := 24; // 24-bit farver
devmode.dmPelsWidth := 1024; // 1024 px bred
devmode.dmPelsHeight := 768; // 768 px høj
devmode.dmFields := DM_BITSPERPEL or DM_PELSWIDTH or
DM_PELSHEIGHT;
devmode.dmSize:=sizeof(devmode);
tal := changedisplaysettings(devmode, CDS_FULLSCREEN);
if tal = DISP_CHANGE_SUCCESSFUL then
tal := 25;
end;

// Sætter opløsningen tilbage:
procedure TForm1.Button2Click(Sender: TObject);
begin
tal := changedisplaysettings(oldmode, CDS_FULLSCREEN);
end;</pre>
Emil Melgaard
- Admin på gruppen Delphi spilprogrammering.
http://www.delphispilprogram.udvikleren.dk



Prøv det her:
Fold kodeboks ind/udKode 

Mvh
Troels



Tak for hjælpen Troels, men hvordan bruger jeg koden i en ny application ? Hvor skal jeg sætte den ind ?

Mvh Anders



du gemmer koden i fil der skal hedde screenRes.pas og derefter tilføjer du det "unit" til dit project.

så i det unit hvor du vill lave skift opløsnings kaldet tilføjer du under implementation
Fold kodeboks ind/udKode 


så skriver du bare Set_screen_resolution(
og så giver resten vidst sig selv.

mvh troels



Det virkede Troels.

Mit problem er bare at når jeg køre ned i den opløsning jeg har sat den til skifter min skærm til at køre 60Hz. Kan man tvinge den til at køre f.eks 85 Hz ?

Mit andet problem er at når jeg lukker programmet forbliver opløsningen den nedsatte. Er der en kode til at sætte den tilbage til den originale opløsning på skærmen når jeg lukker programmet ?

Mvh


Anders



Det virkede desværre ikke, da jeg fik en fejl under kørslen: "Test.exe faulted with message: access violation at 0x77fb16f7: write address 0x00030ffc. Process stopped.

Jeg aner ikke hvad det betyder, men noget må være galt !

Mvh

Anders



Mange mange tak for din hjælp, det virkede...

Nu mangler jeg bare at få hz med så den ikke går ned i 60 hz når jeg køre programmet.
Hvis du kan hjælpe mig med det så skulle det hele funke (-:


Mvh

Anders



Mange mange tak for din hjælp, det virkede...

Nu mangler jeg bare at få hz med så den ikke går ned i 60 hz når jeg køre programmet.
Hvis du kan hjælpe mig med det så skulle det hele funke (-:


Mvh

Anders


Jeg ved det ikke rigtigt, men prøv at kigge i Windows SDK hjælpen under DEVMODE og dmDisplayFrequency.

Emil Melgaard
- Admin på gruppen Delphi spilprogrammering.
http://www.delphispilprogram.udvikleren.dk



t