Как отследить изменения дисплея?

Материал из DRKB

Как отследить изменения дисплея?[править | править код]

Для этого необходимо создать обработчик для перехвата сообщения WM_DISPLAYCHANGE. Применяется это в тех случаях, если Ваше приложение зависит от разрешения экрана (например, приложение работает с графикой).

Далее следует пример обработчика сообщения:

type 
  TForm1 = class(TForm) 
    Button1: TButton; 
  private 
    procedure WMDisplayChange(var Message: TMessage); message WM_DISPLAYCHANGE; 
  public 
    { Public declarations } 
  end; 

var
  Form1: TForm1; 

implementation 

{$R *.DFM} 

procedure TForm1.WMDisplayChange(var Message: TMessage); 
begin 
  { Do Something here } 
  inherited; 
end;


Source: Взято из http://forum.sources.ru
ID: 01452


Эта программа отслеживает изменение характеристик экрана.


  private
    procedure WMDISPLAYCHANGE(var Msg: TWMDISPLAYCHANGE); message WM_DISPLAYCHANGE;

procedure TForm1.FormCreate(Sender: TObject);
var
  bp: integer;
begin
  bp := GetDeviceCaps(GetDC(0), BITSPIXEL);
  Form1.Caption := 'Бит на точку - ' + IntToStr(bp) +
    ' (' + FloatToStr(IntPower(2, bp)) +
    ' цветов). Разрешение ';
  Form1.Caption := Form1.Caption + 
    IntToStr(GetDeviceCaps(GetDC(0), HORZRES)) + 'X';
  Form1.Caption := Form1.Caption + 
    IntToStr(GetDeviceCaps(GetDC(0), VERTRES)) + ' ';
end;

procedure TForm1.WMDISPLAYCHANGE(var Msg: TWMDISPLAYCHANGE);
var
  bp: integer;
begin
  bp := Msg.BitsPerPixel;
  Form1.Caption := 'Бит на точку - ' + IntToStr(bp) + 
    ' (' + FloatToStr(IntPower(2, bp)) + 
    ' цветов). Разрешение ';
  Form1.Caption := Form1.Caption + IntToStr(Msg.Width) + 'X';
  Form1.Caption := Form1.Caption + IntToStr(Msg.Height) + ' ';
end;


e-mail: delphi4all@narod.ru
e-mail: aleksey@sch103.krasnoyarsk.su


Author: Алексей Денисов
ID: 01453



type
  private 
    procedure WMDisplayChange(var msg: TMessage); message WM_DISPLAYCHANGE; 
  public 
  end; 
end; 

var 
  Form1: TForm1; 

implementation 

{$R *.DFM} 

procedure TForm1.WMDisplayChange(var msg: TMessage); 
begin 
  ShowMessage('Display settings changed!'); 
  inherited; 
end;


Source: http://delphiworld.narod.ru/
ID: 01454