Форум: "Начинающим";
Текущий архив: 2011.10.16;
Скачать: [xml.tar.bz2];
ВнизМаксимальное разрешение экрана. Найти похожие ветки
← →
eXAAAXe (2011-06-25 21:47) [0]Снова привет.
EnumDisplaySettings максимальное возвращает разрешение: 1440 x 1050
А тут:
http://market.yandex.ru/model-spec.xml?modelid=6100149&hid=91052
Максимальное 1440x900.
Кому верить?
В параметрах рабочего стола максимальное разрешения для выбора 1440x900.
← →
Anatoly Podgoretsky © (2011-06-25 21:58) [1]Верь 900
← →
Rouse_ © (2011-06-25 22:08) [2]
> Кому верить?
Драйверу видеокарты...
← →
Rouse_ © (2011-06-25 22:10) [3]ЗЫ: бо если даже твой монитор не вытянет 1050, то раз она умеет делать - сделает через конвертацию, но правда с потерей производительности...
← →
QAZ (2011-06-25 22:43) [4]а при чем тут видеокарта
← →
Rouse_ © (2011-06-25 22:56) [5]ну как-бы видережимы выдает она а не диспей, это о птичках :)
← →
QAZ (2011-06-25 23:01) [6]так нужно максимальное моника
← →
eXAAAXe (2011-06-25 23:17) [7]>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;
← →
eXAAAXe (2011-06-26 08:20) [8]Помогите разобраться.
← →
eXAAAXe (2011-06-26 11:18) [9]Даже если объявить EnumDisplaySettingsExA статичной, то функция вываливается.
← →
Омлет © (2011-06-27 14:58) [10]Хз. Может хочет название девайса?
И ты забыл, что брать надо пару значений. Поэтому у тебя выдает неверное максимальное. Вот рабочий код:
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-27 17:11) [11]
> Омлет © (27.06.11 14:58) [10]
Вот блин, я не углядел, спасибо. :)
← →
eXAAAXe (2011-06-27 17:25) [12]Так получилось в итоге:
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;
← →
Омлет © (2011-06-27 22:24) [13]> eXAAAXe (27.06.11 17:25) [12]
Неверно. Зачем правильный код сделал неправильным? Подумай над условными операторами.
← →
eXAAAXe (2011-06-28 14:10) [14]ok.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.10.16;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.003 c