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

Вниз

Узнать частоту обновления экрана и сменить её.   Найти похожие ветки 

 
Galiaf ©   (2006-01-20 20:27) [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;


Вот таким кодом изменяю разрешение экрана, преварительно запомнив старое, при смене разрешения частота обновления экрана сбивается т.е. я должен на время работы программы поставить нужное разрешение, а после её закрытия вернуть всё на свои места но сброс частоты явно мешает вернуть всё на свои места.


 
begin...end ©   (2006-01-20 20:37) [1]

GetDeviceCaps


 
Galiaf ©   (2006-01-21 20:24) [2]

А по точнее


 
Galiaf ©   (2006-01-21 20:24) [3]

А по точнее


 
begin...end ©   (2006-01-21 20:45) [4]

> Galiaf ©   (21.01.06 20:24) [2]

Вы хотите узнать частоту обновления экрана? Используйте GetDeviceCaps:

var
 Freq: Integer;
 DC: HDC;
begin
 DC := GetDC(0);
 Freq := GetDeviceCaps(DC, VREFRESH);
 ReleaseDC(DC)
end


 
Galiaf ©   (2006-01-22 21:27) [5]

С этим понятно, а как теперь установить это значение. Я о том, что программа при смене разрешения сбивает частоту. Запомнив частоту в начале её нужно вернуть в конце, а как это сделать?
P.S.
Извиняюсь конечно что переспросил, просто с WinAPI у меня туговато, ни как не могу книгу найти для изучения того чего незнаю но хочется.


 
GuAV ©   (2006-01-22 22:19) [6]

EnumDisplaySettings с параметром ENUM_CURRENT_SETTINGS и dmFields = DM_BITSPERPEL or DM_PELSWIDTH or DM_PELSHEIGHT or DM_DISPLAYFREQUENCY  or DM_DISPLAYFREQUENCY заполнит стр-ру TDevMode текущими параметрами.

Однако изменять и восстанавливать параметры монитора - IMHO, плохая идея хорошая - не трогать их, работая при любых параметрах.


 
Galiaf ©   (2006-01-26 12:19) [7]

Я делал прогу для тестирования по заказу училки, всё время улучшаю её по заказу всё той же училки, а как принёс её к другу у которого 800x600 (в школе 1024x768) заметил что там в экран ничего не помещается, вот решил сделать проверку, если разрешение 1024х768 то работаем дальше, иначе меняем разрешение а при выходе восстанавливаем. Всё ок вот только частота сбивается. Я был бы очень рад если бы вы сказали мне как сменить разрешение экрана не сбивая частоту.


 
Galiaf ©   (2006-01-26 12:19) [8]

Я делал прогу для тестирования по заказу училки, всё время улучшаю её по заказу всё той же училки, а как принёс её к другу у которого 800x600 (в школе 1024x768) заметил что там в экран ничего не помещается, вот решил сделать проверку, если разрешение 1024х768 то работаем дальше, иначе меняем разрешение а при выходе восстанавливаем. Всё ок вот только частота сбивается. Я был бы очень рад если бы вы сказали мне как сменить разрешение экрана не сбивая частоту.


 
Kolan ©   (2006-01-27 11:44) [9]

Так нев коем случае не делай. Форму нужно создавать так чтобы она умещалась на экране при любом разрешении. Тем более для такой программы это сделать нетрудно.

В помощь тебе. Ancors, Align, Splitter


 
Galiaf ©   (2006-01-29 18:24) [10]

У меня при разрешении экрана 1024х768 всегда возникали проблемы с местом. дело в том что дизайн она поручила не мне, а по её капризам я постоянно сражаюсь с нехваткой места на экране, темболее у меня в основном используются абсолютные координаты (я сразу не подумал что может возникнуть такяа роблема) и переделывать УЖЕ на 800х600 или на любое разрешение просто невозможно (относительно конечно, как говорит мой учитель по физике "всё относительно"). Вот я и решил, что сменить рарешение экрана будет проще всего.


 
Kolan ©   (2006-01-29 19:07) [11]

Дело твое конечно. Но еслибы программа по тестированию сменила бы мне разрешение, то я её бы выкинул не думая ни секунду...

А что интересно при разрешениях более 1024 на 786?

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

Скриншот дай глянуть, любопытно...


 
Bobby   (2006-01-31 12:47) [12]

var
TempDm : TDeviceMode;
.............................................................
EnumDisplaySettings(nil,DWORD(-1), TempDm);
Этот вызов сохраняет в TempDm текущие настройки.
Я правильно понял вопрос?


 
Gero ©   (2006-01-31 12:51) [13]

> [8] Galiaf ©   (26.01.06 12:19)

В корзину такую программу.


 
kaZaNoVa ©   (2006-01-31 13:12) [14]

Gero ©   (31.01.06 12:51) [13]
согласен:)


 
antonn ©   (2006-01-31 13:34) [15]

Gero ©   (31.01.06 12:51) [13]
В корзину такую программу.

не, через shift...


 
Galiaf ©   (2006-02-02 20:32) [16]

Я тоже согласен :)


 
Don Nikola   (2006-02-04 08:06) [17]

2Galiaf:
А где заветная константа CDS_FULLSCREEN в вызове ChangeDisplaySettings?
Если ее указывать, то, теоретически, все должно возвращаться обратно без изменений настроек экрана или положения иконок.
То есть, изменил разрешение, поработал, восстановил. Так в GDI-шных игрушках делается.


 
Кефир87 ©   (2006-02-04 17:30) [18]

В Win9x бывали проблемы с восстановлением разрешения и частоты экрана. Если при выходе из программы написать вот такую штуку:

ChangeDisplaySettings(_devicemodeA(nil^), 0);

Проблема почему-то решелась 8) В XP проблем нет вапще 8)



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

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

Наверх




Память: 0.51 MB
Время: 0.044 c
15-1144159119
fast2
2006-04-04 17:58
2006.04.23
Почему в ХР не запускается keyrus.com (надо для ДОС-приложения)?


15-1141567010
psa247
2006-03-05 16:56
2006.04.23
Парсинг пути к файлу


10-1117455549
mozart
2005-05-30 16:19
2006.04.23
Работа в Ворд


2-1144268509
Nick_serov
2006-04-06 00:21
2006.04.23
Выполняется только половина.....


2-1144679604
Дарья
2006-04-10 18:33
2006.04.23
stringgrid