Форум: "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.011 c