Delphi实现动态修改显示器分辨率
在程序中添加自定义函数DynamicResolution。它有两个参数,分别对应水平和垂直方向的分辨率,函数有一个BOOL类型的返回值。通过判断返回值,可以判断DynamicResolution函数执行是否正确。DynamicResolution函数代码如下:
函数TfrmMain。DynamicResolution(X,Y:word):BOOL;
var
lpDevMode:TDeviceMode;
begin
Result:= EnumDisplaySettings(nil,0,lpDevMode);
if Result then
begin
lpdevmode . DM fields:= DM _ pels width或DM _ PELSHEIGHT
lpdevmode . dmpelswidth:= X;
lpdevmode . dmpelsheight:= Y;
Result:= ChangeDisplaySettings(lpDevMode,0)= DISP _变化_成功;
end;
end;
在程序运行过程中,调用DynamicResolution(640,480)或DynamicResolution(800,600),通过点击表单上的两个按钮“640*480”和“800*600”来修改分辨率。
程序首先通过EnumDisplaySettings获取当前屏幕的分辨率,存储在变量lpDevMode中,然后将lpDevMode设置为新的分辨率,最后通过ChangeDisplaySettings函数完成动态修改显示分辨率的具体操作。
程序代码如下:
unit Unit1
接口
使用
窗口、消息、系统工具、变体、类、图形、控件、表单、
对话框、StdCtrls。
type
TfrmMain = class(t form)
BTN 800600:TButton;
BTN 640480:t button;
procedure btn640480Click(发件人:to object);
procedure btn800600Click(发件人:to object);
私有
{私有声明}
公共
{公共声明}
函数DynamicResolution(X,Y:word):BOOL;
end;
var
frm main:TfrmMain;
实现
{$R *。dfm}
函数TfrmMain。DynamicResolution(X,Y:word):BOOL;
var
lpDevMode:TDeviceMode;
begin
Result:= EnumDisplaySettings(nil,0,lpDevMode);
if Result then
begin
lpdevmode . DM fields:= DM _ pels width或DM _ PELSHEIGHT
lpdevmode . dmpelswidth:= X;
lpdevmode . dmpelsheight:= Y;
Result:= ChangeDisplaySettings(lpDevMode,0)= DISP _变化_成功;
end;
end;
过程TfrmMain.btn640480Click(发件人:to object);
begin
如果动态分辨率(640,480)则
begin
显示消息('当前分辨率为640 * 480 ');
end;
end;
过程TfrmMain.btn800600Click(发送方:to object);
begin
如果动态分辨率(800,600)则
begin
显示消息('当前分辨率为800 * 600 ');
end;
end;
结束。
保存文件,然后按F9运行程序
位律师回复
0条评论