Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Максимальное разрешение экрана.


eXAAAXe ©   (2011-06-25 21:47:00) 

Снова привет.
EnumDisplaySettings максимальное возвращает разрешение: 1440 x 1050

А тут:
http://market.yandex.ru/model-spec.xml?modelid=6100149&hid=91052
Максимальное 1440x900.

Кому верить?
В параметрах рабочего стола максимальное разрешения для выбора 1440x900.


eXAAAXe   (2011-06-28 14:10:00) [1]

ok.


Омлет   (2011-06-27 22:24:00) [2]

> eXAAAXe   (27.06.11 17:25) [12]

Неверно. Зачем правильный код сделал неправильным? Подумай над условными операторами.


eXAAAXe   (2011-06-27 17:25:00) [3]

Так получилось в итоге:

procedure GetMonitorResolutionMax(var W, H: LongWord);
var
 n      : LongInt;
 DevMode: TDeviceMode;
begin
 W:= 0;
 H:= 0;
 n:= 0;
 while EnumDisplaySettingsA(nil, n, DevMode) do
 with DevMode do
 begin
   If (dmScale = 0)      and // Отбрасываем повторные и лишние.
      (dmPelsWidth >= W) then
   begin
     W:= dmPelsWidth;
     H:= dmPelsHeight;

     If (dmPelsHeight > H) then H:= dmPelsHeight;
   end;

   Inc(n);
 end;
end;


eXAAAXe   (2011-06-27 17:11:00) [4]


> Омлет ©   (27.06.11 14:58) [10]


Вот блин, я не углядел, спасибо. :)


Омлет   (2011-06-27 14:58:00) [5]

Хз. Может хочет название девайса?

И ты забыл, что брать надо пару значений. Поэтому у тебя выдает неверное максимальное. Вот рабочий код:


procedure GetMaxDisplayResolution(var W, H: LongWord);
var
 n  : LongInt;
 dm : TDeviceModeA;
begin
 W := 0;
 H := 0;
 n := 0;
 while EnumDisplaySettings(nil, n, dm) do
 begin
   with dm do
   begin
     If (dmScale = 0) then
     begin
       If (dmPelsWidth > W) then
       begin
         W := dmPelsWidth;
         H := dmPelsHeight;
       end;
       If (dmPelsWidth = W) and (dmPelsHeight > H) then
         H:= dmPelsHeight;
     end;
     inc(n);
   end;
 end;
end;


eXAAAXe   (2011-06-26 11:18:00) [6]

Даже если объявить EnumDisplaySettingsExA статичной, то функция вываливается.


eXAAAXe   (2011-06-26 08:20:00) [7]

Помогите разобраться.


eXAAAXe   (2011-06-25 23:17:00) [8]

>Rouse_ ©   (25.06.11 22:56) [5]

Накодил след. процедуру.
Выкидывает "Дебаггер фаулт нотификатион".
Хотя функция загружается из ДЛЛ.
Работаю в Дельфи 7.


procedure GetDisplayResolutionMax(var W, H: LongWord);
var
 n                     : LongInt;
 DevMode               : TDeviceMode;
 EnumDisplaySettingsExA: function (lpszDeviceName: PAnsiChar; iModeNum: DWORD; var lpDevMode: TDeviceModeA; dwFlags: DWORD): BOOL; stdcall;
begin
 W:= 0;
 H:= 0;
 EnumDisplaySettingsExA:= GetProcAddress(GetModuleHandle('user32.dll'), 'EnumDisplaySettingsExA');
 If not Assigned(EnumDisplaySettingsExA) then
 begin
   ShowMessage('!');
   Exit;
 end;

 n:= 0;
 while EnumDisplaySettingsExA(nil, n, DevMode, 2) do // EDS_RAWMODE.
 with DevMode do
 begin
   If (dmScale = 0) then // Отбрасываем повторные и лишние.
   begin
     If (dmPelsWidth  > W) then W:= dmPelsWidth;
     If (dmPelsHeight > H) then H:= dmPelsHeight;
   end;

   Inc(n);
 end;
end;


QAZ   (2011-06-25 23:01:00) [9]

так нужно максимальное моника


Rouse_   (2011-06-25 22:56:00) [10]

ну как-бы видережимы выдает она а не диспей, это о птичках :)


QAZ   (2011-06-25 22:43:00) [11]

а при чем тут видеокарта


Rouse_   (2011-06-25 22:10:00) [12]

ЗЫ: бо если даже твой монитор не вытянет 1050, то раз она умеет делать - сделает через конвертацию, но правда с потерей производительности...


Rouse_   (2011-06-25 22:08:00) [13]


> Кому верить?

Драйверу видеокарты...


Anatoly Podgoretsky   (2011-06-25 21:58:00) [14]

Верь 900


Наверх

Титульная страница Поиск, карта сайта Написать письмо