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函数完成动态修改显示器分辨率的具体操作。

时间: 2024-11-03 03:48:17

Delphi实现动态修改显示器分辨率的相关文章

用CB动态改变显示器分辨率

void __fastcall TForm1::btnGetClick(TObject *Sender){ int x,y; x = GetSystemMetrics(SM_CXSCREEN); y = GetSystemMetrics(SM_CYSCREEN); ShowMessage("显示器水平分辨率:" + AnsiString(x) + "\n\n显示器垂直分辨率:" + AnsiString(y));}//------------------------

WinCE6.0下如何动态设置系统分辨率

      由于WinCE的显示驱动是本地驱动,不能像流驱动一样动态加载.所以,一般情况下不能动态修改和调试.前两天曾介绍过一种在应用程序中针对相同分辨率但不同尺寸的LCD的调试方法.这里继续介绍WinCE6.0下动态设置系统分辨率的一种方法.我们可以通过系统提供的ChangeDisplaySettingsEx()函数实现动态修改系统的分辨率.       设定系统分辨率的参考代码如下:  1     DWORD dwWidth, dwHeight; 2     DEVMODE dm; 3  4

检测客户端显示器分辨率、浏览器类型和客户端IP

分辨率|客户端|浏览器|显示 下面的代码实现了检测客户端显示器分辨率.浏览器类型和客户端IP的功能.你可以把客户端信息保存到Session,ViewState等中以便在其它的页面直接使用. ClientPeek.aspx <%@ Page language="vb" EnableViewState="false" Codebehind="ClientPeek.aspx.vb" AutoEventWireup="false"

Windows 7上如何调整显示器分辨率

介绍一下显示器分辨率调整方法,以Windows 7操作系统为例,在桌面空白处,点击鼠标右键,在弹出菜单中选择"屏幕分辨率". 如下图,点击分辨率列表框,可以看到当前显示分辨率支持情况,选择后点击确定即可. 2.Windows XP上如何调整显示器分辨率? 如果是Windows XP系统,修改分辨率步骤如下: 在桌面空白处点击鼠标右键,在弹出菜单中选择属性. 在显示属性窗口,点击"设置"选项卡. 调整屏幕分辨率滚动条,最后点击确定即可,如下图: 关于显示器刷新频率的问

WinCE动态修改启动LOGO

    前两天介绍了WinCE启动界面的定制,在实际应用中经常还需要让用户方便修改启动LOGO.通常情况下,启动LOGO是编译到BOOT代码中的.为了实现动态修改启动LOGO,需要将LOGO保存至Flash中,BOOT启动时从特定的位置将其读取出来,并填入FrameBuffer.另外,必须让用户能够通过应用程序在WinCE系统中修改Flash中保存的LOGO.为了方便BOOT中显示,一般会在PC上利用Img2LCD将图片文件转换为能够直接填充进FrameBuffer的格式.如果要让该功能更灵活,

ASP.NET 2.0中动态修改页面标题

asp.net|动态|页面 在老外的站上看到解决的好方法,故简单编译之:在一个asp.net 的应用中,经常要动态修改页面的标题,一个典型的例子就是,在一个页面导航的控件中,希望用户点选哪一个连接,在页面的title里就显示相关的内容,举个例子,比如一个网站,有如下的网站架构:有图书分类,下面再有中国图书,外国图书分类,则一般可以用树形或者asp.net 2.0的新增加的导航栏控件(sitemap),来实现,比如 图书--->中国图书;图书---->外国图书等,而如果这个时候,能在页面的<

动态修改.Net StreamReader Encoding编码

stream|编码|动态 在.Net framework中StreamReader的使用encoding必须在构造器中指定,而且中途完全不可以更改. 在一般的情况下,这不会造成什么问题.一般若是从硬盘读取文件,单一文件内的编码一般都是统一的.即便是发现读错,亦可以关闭StreamReader,重启使用新的编码读取. 偏偏偶最近遇到了需要修改编码的需求,而且,我的程序没有关闭重读的机会.因为偶使用的StreamReader的BaseStream是一个Network Stream,我不可以关闭它--

用PHP程序来显示浏览者的显示器分辨率

程序|分辨率|显示 本教程属于原创,转载请注明网页教学网 今天给大家做出了一个能显示浏览者的屏幕分辨率的PHP代码,希望大家使用 一下,有什么问题请到论坛发帖讨论. 首先新建一个文件取名为:resolution.php代码的内容如下:(注意:文件的扩展名必须是.PHP不要是.HTML) <script language="javascript"> <!-- function writeCookie() { var today = new Date(); var the

c#2.0中动态修改页面标题

动态|页面 在老外的站上看到解决的好方法,故简单编译之:在一个asp.net 的应用中,经常要动态修改页面的标题,一个典型的例子就是,在一个页面导航的控件中,希望用户点选哪一个连接,在页面的title里就显示相关的内容,举个例子,比如一个网站,有如下的网站架构:有图书分类,下面再有中国图书,外国图书分类,则一般可以用树形或者asp.net 2.0的新增加的导航栏控件(sitemap),来实现,比如 图书--->中国图书;图书---->外国图书等,而如果这个时候,能在页面的<title&g