Rozdzielczość

0

Pisze mały prgoram w Delphi i mam pewien problem.
Chcę aby po uruchominiu mój program zmienił rozdzielczość ekranu na 800*600 a przy wyjściu z niego zmieniła na taką jak była przed uruchominiemem.

0

W SDK masz opis rekordu i funkcji do tego co potrzebujesz. Poszukaj 'resolution'.

A odczyt Screen.Width i Screen.Height.

0

Akurat piszę coś podobnego i mam kawałek kodu pod ręką:

procedure TForm1.FormCreate(Sender: TObject);
var
  Rozd : packed record
    X, Y : Integer;
  end;
  Mode: TDeviceMode;
begin
  Rozd.X := GetSystemMetrics(SM_CXSCREEN); // pobranie rozdzielczosci w poziomie
  Rozd.Y := GetSystemMetrics(SM_CYSCREEN); // pobranie rozdzielczosci w pionie

if (rozd.X <> 800) and (rozd.Y <> 600)
then
case
   application.MessageBox('Program wygląda najlepiej w rozdzielczości 800x600. Można uuchomić go w wyższych rozdzielczościach, jednak nie zaleca się pracy przy niższych. Kliknij OK aby dostosować rozdzielczość albo ANULUJ aby uruchomić program w bieżącej rozdzieczości.','Wykryto nieoptymalną rozdzielczość ekranu',MB_OKCANCEL+MB_ICONWarning)
of IDOK: with Mode do
  begin
    dmSize:=SizeOf(Mode);
    dmPelsWidth:=800;
    dmPelsHeight:=600;
    dmFields:=DM_PELSWIDTH+DM_PELSHEIGHT;
    ChangeDisplaySettings(Mode,0)
  end;
end; {case}

end;

Wszystko między wyrazami case i IDOK możesz pominąć. Co prawda program nie obsługuje przywracania rozdzielczości przy zamknięciu, ale można zapisać do zmiennych wartość po otwarciu i podpiąć analogiczną procedurę na OnClose formy.

0

Przetestowałem tą procdurę i wszystko ładnie działa aż do momentu ponownego uruchomienia systemu.
Co zrobić żeby rozdzielczość zmieniła się na stałe ?

....sory , nie dopisalem wszystkiego: po ponownym wlaczeniu komputera powraca stara rozdielczosc.

0

A, jak tak to w changedisplaysettings zamiast 0 wpisz CDS_UPDATEREGISTRY. Po więcej szczegółów odsyłam do hepla w Delphi, konkretnie help/windows sdk pod hasłem ChangeDisplaySettings; warto też ustawić częstotliwość odświeżania na wyższą

1 użytkowników online, w tym zalogowanych: 0, gości: 1