Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.013 c
15-1141567010
psa247
2006-03-05 16:56
2006.04.23
Парсинг пути к файлу


2-1144655319
Der Nechk@ssoff
2006-04-10 11:48
2006.04.23
Перенос файлов


2-1144379306
031178
2006-04-07 07:08
2006.04.23
Delphi + Access


9-1128460131
Chuvak
2005-10-05 01:08
2006.04.23
Движок с нуля


2-1144300612
K_VAL
2006-04-06 09:16
2006.04.23
Двумерный массив и оператор For





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский