请问怎么使delphi的应用程序运行时改变系统的分辨率为800*600,退出时又恢复原来分辨率? ( 积分: 100 )

  • 主题发起人 主题发起人 wcbzcy
  • 开始时间 开始时间
W

wcbzcy

Unregistered / Unconfirmed
GUEST, unregistred user!
请问怎么使delphi的应用程序运行时改变系统的分辨率为800*600,退出时又恢复原来分辨率?
急求解答,请高手指点
 
请问怎么使delphi的应用程序运行时改变系统的分辨率为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
x:=getsystemmetrics(sm_cxscreen);
str(x,a);
y:=getsystemmetrics(sm_cyscreen);
str(y,b);
if X<>800 then //决定是否是正常值(800*600)
Resolution(800,600);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Resolution(strtoint(a),strtoint(b));//恢复原值
end;
x,y为integer,a,b为string
 
这个只能使一个窗体产生效果,如果我的一个工程里有十几个窗体,我该在什么地方结束修改分辨率?
 
TForm1.FormClose里可以.
其中,Form1是你的主窗口.只要主窗口关闭了,Application也就关闭了.
 
可我的主窗体是一个用户登陆窗体,登陆进去后才是主窗体。主窗体中有一个注销用户的模块,运行这个模块后主窗体用close关闭,又会出现登陆窗体。这样就还是有问题。
我想在工程退出时恢复系统分辨率应该加这个代码
Resolution(strtoint(a),strtoint(b));//恢复原值
到那啊?
 
用户登陆窗体不要设置为主窗体
 
你在主窗体的initialization里面
设置分辨率
在finalization里面
设置回来.
 
程序启动时,读取分辨率,将机子原来的分辨率保存INI 文件中,然后再设定分辨率,退出时,再读取INI值,进行恢复
 
后退
顶部