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

Previous  Top  Next

    
 

 

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

 

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

Code:

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;

 

 

©Drkb::01452

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

 

 


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

Code:

...

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;

©Drkb::01453

Автор советов: Даниил Карапетян

e-mail: delphi4all@narod.ru

 

Автор справки: Алексей Денисов

e-mail: aleksey@sch103.krasnoyarsk.su

 

 

 


 

Code:

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;

 

 

©Drkb::01454

http://delphiworld.narod.ru/

DelphiWorld 6.0