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

Вниз

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

 
Ilg   (2004-01-03 14:31) [0]

Здравствуйте!
Я столкнулся со следующей проблемой:
Мне нужно изменить разрешение экрана. Использую процедуру

procedure ChangeDisplayResolution(x, y: word);
var
 dm: TDEVMODE;
begin
 ZeroMemory(@dm, sizeof(TDEVMODE));
 dm.dmSize := sizeof(TDEVMODE);
 dm.dmPelsWidth := x;
 dm.dmPelsHeight := y;
 dm.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;
 ChangeDisplaySettings(dm, 0);
end;

В Windows 98 все работает нормально, а в Windows XP наблюдается следующий глюк: разрешение меняется нормально, но частота устанавливается строго 60 Гц (даже если до смены было такое же разрешение, но с нормальной частотой). Как с этим бороться?
Заранее, Большое спасибо!


 
Konstantin   (2004-01-03 15:03) [1]

Привет, dmDisplayFrequency вроде бы и есть частота, вот код из фака для смены разрешения, может поможет.

function SetFullscreenMode(ModeIndex: Integer): Boolean;
var
DeviceMode : TDevMode;
begin
with DeviceMode do
  begin
    dmSize := SizeOf(DeviceMode);
    dmBitsPerPel := 32;
    dmPelsWidth := 800;
    dmPelsHeight := 600;
    dmDisplayFrequency := 85;
    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
ChangeDisplaySettings(T, CDS_FULLSCREEN);
end;


 
Ilg   (2004-01-04 14:20) [2]

Спасибо, но это не очень подходит, т. к. не получится выставлять частоту вручную (поддерживаемая частота не известна, на каждом компьютере разная (кроме тех же 60 Гц)). Проблема в том, что с промощью используемой процедуры в Win98 ставится нормальная частота, а в WinXP - 60 Гц... А может это глюк WinXP или драйверов?


 
Автоответчик   (2004-01-04 15:05) [3]

Сначала получи все возможные режими с помощью EnumDisplaySettings


 
Автоответчик   (2004-01-04 15:05) [4]

Сначала получи все возможные режимы с помощью EnumDisplaySettings



Страницы: 1 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.038 c
3-1077206046
Brenagwynn
2004-02-19 18:54
2004.03.28
БД приложение без БДЕ


1-1078663901
Ученик2
2004-03-07 15:51
2004.03.28
Отчет в Word. Где ошибка?


1-1078922080
Demand2k
2004-03-10 15:34
2004.03.28
PopupMenu


3-1074854331
vantage10
2004-01-23 13:38
2004.03.28
QuickReport отображение CheckBox


14-1077640095
}|{yk
2004-02-24 19:28
2004.03.28
Чем лучше?