Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Программное изменение разрешения экрана [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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо