首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 動態修改螢幕解析度:ChangeDisplaySettings 完整實作

     編輯:Delphi

示範在程式中動態修改螢幕解析度,無需重開機即時生效。

介面設計

表單放置兩個 Button:btn640480 (640×480)、btn800600 (800×600)。

核心函數 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;

流程:EnumDisplaySettings 取得目前模式 → 修改寬高 → 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
    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 ShowMessage('目前解析度: 640×480');
end;

procedure TfrmMain.btn800600Click(Sender: TObject);
begin
  if DynamicResolution(800, 600) then ShowMessage('目前解析度: 800×600');
end;
end.

執行效果

初始畫面:

點擊按鈕動態切換解析度:

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved