熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

Delphi實現動態修改顯示器分辨率

2013-11-23 17:29:07  來源: 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鍵運行程序程序運行的初始畫面如圖所示
  
  在程序運行過程中用戶可以通過單擊**按鈕把屏幕分辨率分別更改為**如圖所示
  
 

  
程序運行的初始畫面

  

  
程序運行結果

From:http://tw.wingwit.com/Article/program/Delphi/201311/24653.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.