其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

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


发布日期:2018年10月30日
 
Delphi实现动态修改显示器分辨率
本实例演示如何在程序中动态修改屏幕的分辨率并且不需要重新启动计算机就可以生效

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

主界面

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

function TfrmMainDynamicResolution(X Y: word): BOOL;

var

lpDevMode: TDeviceMode;

begin

Result := EnumDisplaySettings(nil lpDevMode);

if Result then

begin

lpDevModedmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;

lpDevModedmPelsWidth := X;

lpDevModedmPelsHeight := Y;

Result:=ChangeDisplaySettings(lpDevMode)= DISP_CHANGE_SUCCESSFUL;

end;

end;

在程序运行过程中通过单击窗体上的两个按钮**来调用DynamicResolution()或DynamicResolution()修改分辨率

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

程序代码如下

unit Unit;

interface

uses

Windows Messages SysUtils Variants Classes Graphics Controls Forms

Dialogs StdCtrls;

type

TfrmMain = class(TForm)

btn: TButton;

btn: TButton;

procedure btnClick(Sender: TObject);

procedure btnClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

function DynamicResolution(X Y: word): BOOL;

end;

var

frmMain: TfrmMain;

implementation

{$R *dfm}

function TfrmMainDynamicResolution(X Y: word): BOOL;

var

lpDevMode: TDeviceMode;

begin

Result := EnumDisplaySettings(nil lpDevMode);

if Result then

begin

lpDevModedmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;

lpDevModedmPelsWidth := X;

lpDevModedmPelsHeight := Y;

Result:=ChangeDisplaySettings(lpDevMode)=DISP_CHANGE_SUCCESSFUL;

end;

end;

procedure TfrmMainbtnClick(Sender: TObject);

begin

if DynamicResolution( ) then

begin

ShowMessage(现在的分辨率是*);

end;

end;

procedure TfrmMainbtnClick(Sender: TObject);

begin

if DynamicResolution( ) then

begin

ShowMessage(现在的分辨率是*);

end;

end;

end

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

在程序运行过程中用户可以通过单击**按钮把屏幕分辨率分别更改为**如图所示

程序运行的初始画面

程序运行结果

上一篇:用Delphi2005和DUnit搭建敏捷开发平台

下一篇:PowerBuilder的数据窗口[2]