Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.12;
Скачать: CL | DM;

Вниз

Разрешение экрана   Найти похожие ветки 

 
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 вся ветка

Текущий архив: 2006.03.12;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.041 c
6-1131884786
NTFS
2005-11-13 15:26
2006.03.12
Как сделать что бы яваскрипт определял TWebBrouser не как ИЕ


15-1139698708
KDV
2006-02-12 01:58
2006.03.12
Проблема с винтом


2-1140700066
VitV
2006-02-23 16:07
2006.03.12
Смена цвета кнопки


15-1140386088
Volf_555
2006-02-20 00:54
2006.03.12
Где скачать хоть какие-нибудь игры для Sony Ericsson k600i?!!!!!!


2-1140561855
Начинающий__
2006-02-22 01:44
2006.03.12
Form.BorderStyle = bsSizeable, не показывать иконку