Delphi实现动态修改显示器分辨率

本实例演示如何在程序中动态修改屏幕的分辨率,并且不需要重新启动计算机就可以生效。

  向窗体上添加两个Button控件,设计完成的主界面如图1所示。

 

  图1 主界面

  在程序中添加一个自定义函数DynamicResolution,它有两个参数,分别对应于水平和垂直方向的分辨率,并且该函数有一个BOOL类型的返回值,通过判断返回值可以判断DynamicResolution函数是否正确执行。DynamicResolution函数代码如下:

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

  在程序运行过程中,通过单击窗体上的两个按钮“640*480”、“800*600”来调用DynamicResolution(640,480)或DynamicResolution(800,600)修改分辨率。

  程序首先通过EnumDisplaySettings来取得当前屏幕的分辨率,把它存储在变量lpDevMode中,然后把lpDevMode设置为新的分辨率,最后通过ChangeDisplaySettings函数完成动态修改显示器分辨率的具体操作。

  程序代码如下:

  unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;
type
 TfrmMain = class(TForm)
 btn800600: TButton;
 btn640480: TButton;
 procedure btn640480Click(Sender: TObject);
 procedure btn800600Click(Sender: TObject);
private
 { Private declarations }
public
 { Public declarations }
 function DynamicResolution(X, Y: word): BOOL;
 end;
var
 frmMain: TfrmMain;
 implementation
 {$R *.dfm}
 function TfrmMain.DynamicResolution(X, Y: word): BOOL;
var
 lpDevMode: TDeviceMode;
begin
 Result := EnumDisplaySettings(nil, 0, lpDevMode);
 if Result then
 begin
  lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;
  lpDevMode.dmPelsWidth := X;
  lpDevMode.dmPelsHeight := Y;
  Result:=ChangeDisplaySettings(lpDevMode,0)=DISP_CHANGE_SUCCESSFUL;
 end;
end;
procedure TfrmMain.btn640480Click(Sender: TObject);
begin
 if DynamicResolution(640, 480) then
 begin
  ShowMessage(’现在的分辨率是640*480’);
 end;
end;
procedure TfrmMain.btn800600Click(Sender: TObject);
begin
 if DynamicResolution(800, 600) then
 begin
  ShowMessage(’现在的分辨率是800*600’);
 end;
end;
end.

  保存文件,然后按F9键运行程序,程序运行的初始画面如图2所示。

  在程序运行过程中,用户可以通过单击“800*600”和“640*480”按钮把屏幕分辨率分别更改为“800*600”和“640*480”,如图3所示。

 

  图2 程序运行的初始画面

 

  图3 程序运行结果

本文来自: 编程入门网 http://www.bianceng.cn/Programming/Delphi/zl/200804/9404.htm
本文来自: 编程入门网 http://www.bianceng.cn/Programming/Delphi/zl/200804/9404.htm

转载于:https://www.cnblogs.com/tecsoon/archive/2009/03/04/1403048.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值