怎样设置程序启动时把显示分辨率设为800*600,颜色值不变,然后程序退出后把显示分辨率恢复为以前的设置(50分)

  • 主题发起人 主题发起人 信毅^_^
  • 开始时间 开始时间

信毅^_^

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样设置程序启动时把显示分辨率设为800*600,颜色值不变,然后程序退出后把显示分辨率恢复为以前的设置
 
动态修改分辨率:

function Resolution(X,Y:word):boolean;
var
DevMode:TDeviceMode;
begin
Result:=EnumDisplaySettings(nil,0,DevMode);
if Result then
begin
DevMode.dmFields:=DM_PELSWIDTH Or DM_PELSHEIGHT;
DevMode.dmPelsWidth:=X;
DevMode.dmPelsHeight:=Y;
Result:=ChangeDisplaySettings(DevMode,0)=DISP_CHANGE_SUCCESSFUL;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Resolution(800,600);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Resolution(1280,1024);
end;
 
顺便帮你测试了一下。
嘿,还真管用。
 
退出时恢复以前设定:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
x:longint;
y:longint;
a:string;
b:string;
begin
x:=getsystemmetrics(sm_cxscreen);
str(x,a);
y:=getsystemmetrics(sm_cyscreen);
str(y,b);
begin
Resolution(strtoint(a),strtoint(b));
end;
end;
[:)]
 
后退
顶部