Текущий архив: 2004.10.24;
Скачать: CL | DM;
ВнизРазрешение Найти похожие ветки
← →
Кирилл © (2004-09-20 15:14) [0]Скажите пожалуйста, как програмно поменять разрешение экрана в виндусе?
← →
ssk © (2004-09-20 15:47) [1]
function SetResolution(Width, Height, Color: integer): Boolean;
var
DeviceMode: TDevMode;
begin
with DeviceMode do begin
dmSize:=SizeOf(DeviceMode);
dmBitsPerPel:=Color;
dmPelsWidth:=Width;
dmPelsHeight:=Height;
dmFields:=DM_BITSPERPEL or DM_PELSWIDTH or DM_PELSHEIGHT;
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 RestoreDefaultResolution;
asm
push CDS_FULLSCREEN
push 0
call ChangeDisplaySettings
end;
← →
Zacho © (2004-09-20 19:37) [2]2 Кирилл © :
Хорошенько подумай, прежде чем делать такое. Например, если мне попадется такая программа, то она сразу же окажется в корзине.
Не лучше ли посмотреть в сторону DirectX ?
← →
XProger © (2004-09-21 01:57) [3]Zacho, какой из тебя кодер тогда? Если из-за куска кода забиваешь на остальной кусок? Допустим он пишет под OpenGL и что? Хочешь сказать, что ему необходимо писать под DirectX? Смешно сказал однако...
Кирилл, вот немного улучшенный вариант
Freq - частота обновления монитора 60 - 120+
BPP - количество бит на пиксель
function xglChangeMode(FullScreen: boolean; Width, Height: integer; BPP: Byte; Freq: Byte): boolean; stdcall;
var
dev : TDeviceMode;
res : DWORD;
begin
Result := false;
if FullScreen then
begin
FillChar(dev, SizeOf(dev), 0);
dev.dmSize := sizeof(dev);
EnumDisplaySettings(nil, 0, dev);
with dev do
begin
dmPelsWidth := Width;
dmPelsHeight := Height;
dmBitsPerPel := BPP;
dmDisplayFrequency := Freq;
dmFields := DM_BITSPERPEL or
DM_PELSWIDTH or
DM_PELSHEIGHT or
DM_DISPLAYFREQUENCY;
res := ChangeDisplaySettings(dev, CDS_TEST or CDS_FULLSCREEN);
if res = DISP_CHANGE_SUCCESSFUL then
ChangeDisplaySettings(dev, CDS_FULLSCREEN);
end;
end
else
res := ChangeDisplaySettings(_devicemodeA(nil^), CDS_FULLSCREEN);
if res <> DISP_CHANGE_SUCCESSFUL then
begin
Log("ChangeDisplayMode: failed");
Exit;
end;
Result := true;
end;
Страницы: 1 вся ветка
Текущий архив: 2004.10.24;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.036 c