Форум: "Media";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];
ВнизРазрешение экрана Найти похожие ветки
← →
S46E (2005-11-10 16:37) [0]Как поменять принудительно разрешение экрана на 1024x768? Частоту обновления?
Делаю текстовый квест с полноэкранным режимом.
← →
Antonn © (2005-11-10 16:45) [1]я так делал (передавай хендл окна, герцовку берет из настроек):
function SetFullscreenMode(_handle:HWND): Boolean;
var DeviceMode: TDevMode; DC: THandle; fre: integer;
begin
with DeviceMode do
begin
DC := GetDC(_handle);
fre := GetDeviceCaps(DC, VREFRESH);
ReleaseDC(_handle, DC);
dmSize := SizeOf(DeviceMode);
dmBitsPerPel := 32;
dmDisplayFrequency:=fre;
dmPelsWidth := 640;
dmPelsHeight := 480;
dmFields := DM_BITSPERPEL or DM_PELSWIDTH or DM_PELSHEIGHT or DM_DISPLAYFREQUENCY;
result := False;
if ChangeDisplaySettings(DeviceMode, CDS_TEST or CDS_FULLSCREEN) <>
DISP_CHANGE_SUCCESSFUL then
Exit;
Result := ChangeDisplaySettings(DeviceMode, CDS_FULLSCREEN) =
DISP_CHANGE_SUCCESSFUL;
end;
end;
procedure RestoreDefaultMode;
var T: TDevMode;
begin
ChangeDisplaySettings(T, CDS_FULLSCREEN);
end;
← →
S46E (2005-11-13 17:01) [2]Использую вот так:
procedure TForm1.FullScreen;
var
modes:array [0..255] of TDevMode;
dm: TDEVMODE;
q:integer;
maxF: Cardinal;
begin
maxF:=0;
DefH:=dm.dmPelsHeight;
DefW:=dm.dmPelsWidth;
DefF:=dm.dmDisplayFrequency;
ZeroMemory(@dm, sizeof(TDEVMODE));
dm.dmSize := sizeof(TDEVMODE);
dm.dmPelsWidth := 1024;
dm.dmPelsHeight := 768;
q:=0;
while EnumDisplaySettings(nil,q,Modes[q]) do
begin
if (Modes[q].dmPelsHeight=768) and (Modes[q].dmPelsWidth=1024) then
begin
if Modes[q].dmDisplayFrequency>maxF then
MaxF:=Modes[q].dmDisplayFrequency
end;
Inc(q);
end;
dm.dmDisplayFrequency := MaxF;
dm.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT or DM_DisplayFrequency;
ChangeDisplaySettings(dm, 0);
end;
procedure TForm1.DefScreen;
var
dm: TDEVMODE;
begin
dm.dmPelsWidth := defW;
dm.dmPelsHeight := defH;
dm.dmDisplayFrequency := defF;
ZeroMemory(@dm, sizeof(TDEVMODE));
dm.dmSize := sizeof(TDEVMODE);
dm.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT or DM_DisplayFrequency;
ChangeDisplaySettings(dm, 0);
end;
Что делать с такими вещами как неправильное расположение окон программ при возращении в начальное разрешение( при DefScreen)? Как запустить FullScreen при активации окна после сворачивания?
← →
Anatoly Podgoretsky © (2005-11-13 17:42) [3]Делать так - пользователю вредить, для этого был изобретен DirectX
← →
S46E (2005-11-13 20:00) [4]Вечно все сводится к чему-то не к тому к чему шел..на этом примере можно решить проблемы которые я описал?:)
← →
Anatoly Podgoretsky © (2005-11-13 20:09) [5]На этом примере можно испортить только рабочий стол пользователя как минимум.
← →
XProger © (2005-11-14 02:50) [6]Anatoly Podgoretsky, Все части Quake 2, 3; Doom 3 тоже портят? Сильно? Ужас какой... ;)
S46E, ты видимо и не проверял, что тебе насоветовали? А зря...
← →
S46E (2005-11-14 09:40) [7]Проверил сразу же как написал тот пост..да, действительно круто=)
Остался вопрос как запустить SetFullscreenMode после активации окна после сворачивания.. OnActivate не срабатывает, кажется это не то что я думал..=)
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.036 c