![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Максимальное разрешение экрана.
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