Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.47 MB
Время: 0.042 c
3-1096448284
Serrrrg
2004-09-29 12:58
2004.10.24
Ошибка записи.


4-1094799811
Александр1
2004-09-10 11:03
2004.10.24
USB


8-1091007330
xdev
2004-07-28 13:35
2004.10.24
Перерисовка формы


9-1088280771
ALexb
2004-06-27 00:12
2004.10.24
delphix


14-1097128849
Fanat
2004-10-07 10:00
2004.10.24
Онлайн игрушки