Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Сменить разрешение


Автор: Paranoik 10.8.2006, 13:26
Прива всем. У меня вот возникла такая проблемка, вообщем необходимо несколько раз менять разрешение экрана, а потом всё возвращать на свои места, т. е. если я поменяю разрешение с 1280на1024 на 800на600, потом мне нужно восстановить обратно... но тут какая проблема вылазиет, например если менять разрешение то у большинства ламповых мониоров еще и меняется частота экрана (в тфт такого не наблюдал),  поэтому мне необходимо еще каким нибудь образом запоминать и частоту экрана, а это вот как раз я и незнаю как это сделать.. мож кто поможет ?

Автор: drkot 10.8.2006, 13:41
а ты частоту запоминай и востанавливай вот константы запросов
// Flag                   Meaning
// DM_BITSPERPEL         Use the dmBitsPerPel value.
// DM_PELSWIDTH           Use the dmPelsWidth value.
// DM_PELSHEIGHT         Use the dmPelsHeight value.
// DM_DISPLAYFLAGS     Use the dmDisplayFlags value.
// DM_DISPLAYFREQENCY  Use the dmDisplayFrequency value.

// Indicates how the graphics mode should be changed.
// May be one of the following:

//  Flag                Meaning
//  0                   The graphics mode for the current screen
//                      will be changed dynamically.
//  CDS_UPDATEREGISTRY  The graphics mode for the current screen
//                      will be changed dynamically and the graphics
//                      mode will be updated in the registry. The mode
//                      information is stored in the USER profile.
//  CDS_TEST            The system tests if the requested graphics
//                      mode could be set.

Автор: Sunr1se 10.8.2006, 13:42
http://support.microsoft.com/?kbid=210603

Автор: Romikgy 10.8.2006, 13:43
внизу смотрел?
да и по поиску поройся

Автор: Alexeis 10.8.2006, 16:05
Установить
Код

function SetFullscreenMode(DeviceMode : TDevMode):Boolean;
begin
  with DeviceMode do
   begin
    dmSize:=SizeOf(DeviceMode);
    dmFields:=DM_BITSPERPEL or DM_PELSWIDTH or DM_PELSHEIGHT or DM_DISPLAYFREQUENCY;
    result:=False;
    if ChangeDisplaySettings(DeviceMode,CDS_TEST or CDS_FULLSCREEN) <> DISP_CHANGE_SUCCESSFUL
      then Exit;
    Result:=ChangeDisplaySettings(DeviceMode,CDS_FULLSCREEN) = DISP_CHANGE_SUCCESSFUL;
   end;
end;

Вернуть
Код

procedure RestoreDefaultMode;
  var T : ^TDevMode ;
begin
  T := Nil;
  ChangeDisplaySettings(T^,CDS_FULLSCREEN);
end;

Автор: z-END 10.8.2006, 16:43
а значки рабочего стола при этом на место встанут?

Автор: Alexeis 10.8.2006, 16:49
Цитата(z-END @  10.8.2006,  16:43 Найти цитируемый пост)
а значки рабочего стола при этом на место встанут?

Значки нормально, но иногда надо все окна заставить перерисоватся, по идее этого не должно быть, но иногда происхдит. Эффект такой как если бы поменяли разешение через реестр.

Автор: Paranoik 12.8.2006, 01:54
Лады.. пасиба всем))) !  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)