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


Автор: Siv 16.3.2006, 23:41
Нужно вывести в список поддерживаемые монитором разрешения и частоту. Глядел в разные FAQ_и, кроме разреения и кол - во цветов ниче не наюзал((( есть идеи?

Автор: teplotaya 17.3.2006, 01:22
EnumDisplaySettings(...)

Автор: Siv 17.3.2006, 02:32
teplotaya, эта функция получает частоту установленную в данный момент, а нужен список smile

Автор: Alexeis 17.3.2006, 11:25
Siv, у меня есть программа которая это делает
Добавлено @ 11:29
http://alexei-s1.narod.ru/Deskres.7z
Добавлено @ 11:33
Она не только получает список но и позволяет запускать программы и файлы вообще (при помощи ярлыков) при любых параметрах и гибко меняет размеры и положение чтоб оставаться в поле видимости. При аварийном завершении возврващает все как было
Добавлено @ 11:39

Вот фрагмент который делает то что надо

Код

type
  sp = ^dsp;
  dsp = Record
          DeviceMode : TDevMode;
          next : sp;
        end;

var
    pstart,pend,pn : sp;

............
 var
     a,i : Integer;
     d   : TDevMode;
     p   : pansichar;
     b   : boolean;
begin
  p := nil;
  a := 0;
  New(pstart);
  pend := pstart;
  Repeat
    b := EnumDisplaySettings(p,a,d);
    inc(a);
    Combobox1.Items.Add(
                    inttostr(d.dmPelsWidth) + 'x' +
                    inttostr(d.dmPelsHeight) + '   Color - ' +
                    inttostr(d.dmBitsPerPel) + ' bit ' +
                    inttostr(d.dmDisplayFrequency)+ 'Hz');
     pend^.DeviceMode := d;
     New(pn);
     pend^.next := pn;
     pend := pn;
    until not b;
  pend.next := Nil;
  Combobox1.MaxLength := a;

Автор: Siv 17.3.2006, 22:25
alexeis1, а можно, если не трудно примерчик в rar_e иль zip_e выложить, а то распаковать не получается, а с кодом фигня какая - то((((

Автор: Alexeis 21.3.2006, 11:57
Siv, http://alexei-s1.narod.ru/Deskres.rar

Поясняю пример
код
Код

type    
  sp = ^dsp;    
  dsp = Record    
          DeviceMode : TDevMode;    
          next : sp;    
        end;    
var    
    pstart,pend,pn : sp;


пишется вне функции (глобальное объявление)

код
Код

 var    
     a,i : Integer;    
     d   : TDevMode;    
     p   : pansichar;    
     b   : boolean;    
begin    
  p := nil;    
  a := 0;    
  New(pstart);    
  pend := pstart;    
  Repeat    
    b := EnumDisplaySettings(p,a,d);    
    inc(a);    
    Combobox1.Items.Add(    
                    inttostr(d.dmPelsWidth) + 'x' +    
                    inttostr(d.dmPelsHeight) + '   Color - ' +    
                    inttostr(d.dmBitsPerPel) + ' bit ' +    
                    inttostr(d.dmDisplayFrequency)+ 'Hz');    
     pend^.DeviceMode := d;    
     New(pn);    
     pend^.next := pn;    
     pend := pn;    
    until not b;    
  pend.next := Nil;    
  Combobox1.MaxLength := a;


помещается в функцию (или метод)

pstart указатель на начало односвязного списка(хотел же список)
можно конечно переделать в массив

каждый элемент списка содержит запись
типа TDevMode.

В ней описан один из возможных режимов подержанных как монитором так и видиокартой(некоторые режимы рабочие но не прописанные в мониторе здесь могут отсутствовать(но их использование все равно не желательноsmile )).

Все элементы полностью все режимы.

Combobox1 у меня также отображает список (не забудьте бросить на формуsmile) , но его данные не годятся для установки режимов, поэтому и дублировал данные списком.

Вроде все.

пишите что конкретно непонятно smile
Добавлено @ 11:58

ps. первая ссылка (на *.7z уже не действительна)

Автор: Siv 8.5.2006, 15:24
огромное спасибо, извини что так долго  smile  

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