首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
首页 | JAVA | C# | VB | VB.NET | C/C++ | delphi | 工程管理 | 其他语言 | 论坛
各大城市软件开发培训、软件人才免费咨询热线:400-700-5807
 您现在的位置: 中国IT实验室 >> 桌面开发 >> Delphi >> 正文
Delphi实现动态修改显示器分辨率
来源:ChinaItLab 作者:佚名 时间:2007-4-5

  本实例演示如何在程序中动态修改屏幕的分辨率,并且不需要重新启动计算机就可以生效。
  
  向窗体上添加两个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 程序运行结果
【责编:Lili】
中国IT教育热线咨询
相关文章
Delphi初学者应小心的六大陷阱
基于Delphi的异常处理技术探究
Delphi中用API实现在MSN的信息提示
Delphi中"包"的妙用…
如何用Delphi实现子目录级的文件查询
在Delphi数据库应用程序中常见错误
如何使用Delphi实现无边界窗体的移动
如何用Delphi创建快捷方式
如何在C++中动态分配二维数组
利用 Delphi 轻松编制压缩助理程序…
推荐文章

 精彩友情推荐
·Asp源码 PHP源码
·CGI源码 JSP源码
·建站书籍教程
·服务器软件 .net源码
·建站工具软件
·IDC资讯大全
·机房品质万里行
·IDC托管必备知识
·全国IDC报价
·网站推广优化
最新更新 推荐文章
·框架:J2EE WEB应用架构分析…03-13
·几种VC++数据库开发技术的相对比…03-13
·利用C#实现标注式消息提示窗口03-13
·用C#创建COM对象03-13
·Visual C#多线程参数传递浅析…03-13
·Visual C#多线程参数传递浅析…03-13
·基于HOOK和MMF的Win密码渗透技术11-15
·Visual C++设计超强仿QQ自动伸缩…11-15
·Java SE 6.0实现高质量桌面集成开…11-15
·史玉柱东山再起幕后高人11-15
·用C#创建COM对象09-06
·IT管理十大失误及其对策08-30
·VC中利用MFC设计绘图程序初步08-23
·JAVA中对象创建和初始化过程08-23
·C语言中的位域的使用08-09
·浅谈Java桌面应用程序开发08-09
·C#的前途如何?08-02
·几种VC++数据库开发技术的相对比较07-12
·用Visual C#实现网络封包监视…07-12
·VB.NET中的TextBox控件详解07-12
·VB.NET实现PC与掌上电脑PPC的双向通信07-05