Форум: "WinAPI";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
ВнизРазрешение экрана Найти похожие ветки
← →
dprimakov (2005-12-20 12:40) [0]Подскажите, пожалйста, как программно поменять разрешение экрана?
← →
LORAN (2005-12-20 14:54) [1]Надо обратиться к объекту TScreen и посмотреть значения его полей Width и Height. А вот чтобы установить свои значения требуется обратиться к функции Api: ChangeDisplaySettings. Если хош вернуть текущие настройки по завершении работы программы, то перед вызовом изменений надо запомнить эти настройки например таким образом:
uses ShellApi;
var
DefWidth, DefHeight, BPP: word;
...
procedure SaveSettings;
var
DC: hDC;
begin
DefWidth := Screen.Width;
DefHeight := Screen.Height;
DC := CreateDC("DISPLAY", nil, nil, nil);
BPP := GetDeviceCaps(DC, BITSPIXEL);
end;
После этого можно устанавливать свои параметры.procedure SetScreen(BPP:byte;width,height,FR:integer);
var
D: TDevMode;
h: HWND;
begin
h:=0;
D.dmDeviceName:="DISPLAY";
D.dmBitsPerPel:=BPP;
D.dmDisplayFrequency:=FR;
D.dmPelsWidth:=Width;
D.dmPelsHeight:=Height;
D.dmFields:=DM_BITSPERPEL+DM_PELSWIDTH+DM_PELSHEIGHT+DM_DISPLAYFREQUENCY;
D.dmSize:=SizeOf(D);
if ChangeDisplaySettings(D,CDS_TEST)=DISP_CHANGE_SUCCESSFUL then
ChangeDisplaySettings(D,CDS_UPDATEREGISTRY)
else
MessageBox(h,"This mode is not supported by your video.",
"Failed to change mode", MB_ICONWarning);
end;
Вызывается так: SetScreen(глубина цвета, разрешение по горизонтали, разрешение по вертикали, частота в герцах);
Например:
SetScreen(16,800,600,80); {16 бит цвет, 800х600, 80Гц.}
При завершении программы для восстановления старых параметров вызываем эту процедуру с сохранёнными ранее значениями:
SetScreen(BPP,DefWidth,DefHeight,80);
Частота по умолчанию 80
можно сохранить и этот параметр при запуске
DefFR:=GetDeviceCaps(DC, VREFRESH);
и восстановить при закрытии программы:
SetScreen(BPP,DefWidth,DefHeight,DefFR);
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.011 c