Ändern der Bildschirmauflösung:
Delphi-Quellcode:
function ChangeRes(X, Y:Integer; Frequency: Byte; FullScreen: Boolean): Boolean;
var DevMode:TDeviceMode;
begin
// Initialisieren
EnumDisplaySettings(nil, 0, DevMode);
DevMode.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT or DM_DISPLAYFREQUENCY;
DevMode.dmDisplayFrequency := Frequency;
DevMode.dmPelsWidth := X;
DevMode.dmPelsHeight := Y;
// Auflösung ändern
if FullScreen
then Result := ChangeDisplaySettings(DevMode, CDS_FULLSCREEN) = DISP_CHANGE_SUCCESSFUL
else Result := ChangeDisplaySettings(DevMode, 0) = DISP_CHANGE_SUCCESSFUL;
end;
// Aufruf zB.:
begin
//...
If not ChangeRes(800, 600, 0, True) then
begin
MessageBox(0,
'Das ändern der Auflösung ist fehlgeschlagen....',
'Fehler:', MB_OK or MB_ICONERROR);
Exit;
end;
//...
// Normale, in Windows eingestellte Bildschirmauflösung wiederherstellen:
ChangeDisplaySettings(PDeviceMode(nil)^,0);
end;
Wenn bei Frequency "0" angegeben wird setzt Win die passende (wenn möglich).
Es ist nicht gut einfach eine Vorzugeben, da auch TFT's nicht immer 1024x768 mit 6Hz darstellen,
Die Frequenz muss man dan auch erst mittels
GetDeviceCaps auslesen/bestimmen.
zB.:
Delphi-Quellcode:
DC := GetDC(
Handle);
Bits := GetDeviceCaps(
DC, BITSPIXEL);
HRes := GetDeviceCaps(
DC, HORZRES);
VRes := GetDeviceCaps(
DC, VERTRES);
Freq := GetDeviceCaps(
DC, VREFRESH);
//<---<<<