![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Программное изменение разрешения экрана [D7, WinXP]
*Ray* © (2006-11-29 12:56:00)Доброе время суток, дамы и господа!
Помогите пожалуйста советом, как можно при загрузке программы запомнить текущение разрешение экрана, поставить нужное мне разрешение, а после завершения работы с программой, опять вернуть разрешение, которое было. Заранее спасибо!
Anatoly Podgoretsky (2006-12-05 16:01:00) [1]> Loginov Dmitry (05.12.2006 15:34:13) [13]
Для монитора, а видео не хочешь?
Loginov Dmitry (2006-12-05 15:34:00) [2]> это недопустимо если только не хочешь навредить пользователю
Причем иному пользователю может так навредить, что потом в SafeMode приходится дрова для монитора сносить.
DevilDevil (2006-12-05 13:09:00) [3]
// изменить
procedure ChangeDisplaySettings(ScreenX, ScreenY : word);
var
dm : TDEVMODE;
begin
ZeroMemory(@dm, sizeof(TDEVMODE));
dm.dmSize := sizeof(TDEVMODE);
dm.dmPelsWidth := ScreenX;
dm.dmPelsHeight := ScreenY;
dm.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;
ChangeDisplaySettings(dm, 0);
end;
// восстановить
procedure RestoreDisplaySettings;
begin
ChangeDisplaySettings(PDEVMODE(nil)^, 0);
end;
*Ray* (2006-12-05 12:42:00) [4]Большое спасибо за помощь!
ЮЮ (2006-11-30 11:54:00) [5]
> *Ray* © (29.11.06 12:56)
А может лучше свою программу научить правильно работать с любым, ужеустановленным пользователем, разрешением экрана?
Darvin (2006-11-30 11:54:00) [6]ChangeDisplaySettings ( Mode, 0 ); - не меняет положения иконок. Работает уже 4 года в программе
DVM (2006-11-30 10:21:00) [7]
> Разве просили рабочий стол портить?
А разве про сохранение положения иконок упоминалось? Разрешение код меняет. Это и просили. Если человек сообразителтный он заменит на CDS_FULLSCREEN или другой флаг подходящий.
Anatoly Podgoretsky (2006-11-30 10:14:00) [8]> DVM (30.11.2006 10:10:06) [6]
Разве просили рабочий стол портить?
DVM (2006-11-30 10:10:00) [9]
> "Повбивав би..."
> ... а потом иконки приходиться по рабочему столу собирать.
>
Чего просили, то и написал.
Ганна Юхимівна (2006-11-30 08:50:00) [10]
>DVM © (29.11.06 12:59) [1]
> Res := ChangeDisplaySettings(mode, CDS_UPDATEREGISTRY);
"Повбивав би..."
... а потом иконки приходиться по рабочему столу собирать.
Прав Анатолий - только на своей поверхности ! Вам молодой человек нужно в конференцию "Игры".
Anatoly Podgoretsky (2006-11-29 18:28:00) [11]> DVM (29.11.2006 13:17:03) [3]
> А как же OpenGL?
Про это не знаю, читай ответ так - только не средствами АПИ, это недопустимо если только не хочешь навредить пользователю, другие разрешения должны использоваться на surface
DVM (2006-11-29 13:17:00) [12]
> DirectX за остальное сильно пинать ногами.
А как же OpenGL?
Anatoly Podgoretsky (2006-11-29 13:08:00) [13]> *Ray* (29.11.2006 12:56:00) [0]
DirectX за остальное сильно пинать ногами.
DVM (2006-11-29 12:59:00) [14]var
i: integer;
mode: TDevMode;
Res: integer;
begin
Result := true;
i := 0;
Res := 0;
while EnumDisplaySettings(nil, i, mode) do
begin
if (mode.dmPelsWidth = 1024) and (mode.dmPelsHeight = 768) and
(mode.dmBitsPerPel = 32) and (mode.dmDisplayFrequency = 85) then
Res := ChangeDisplaySettings(mode, CDS_UPDATEREGISTRY);
Inc(i);
end;
end;