프로그래밍/Delphi

[델파이소스] 폼이 화면 밖으로 나가지 못하게

프링글 2009. 8. 5. 13:51

폼들이 화면 밖으로 나가지 못하게 하려할때!
포인트 : WM_WINDOWPOSCHANGING 후킹

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
TForm1 = class(TForm)

private
   { Private declarations }
   procedure WMWindowPosChanging(var Message: TWMWindowPosChanging); message    
WM_WINDOWPOSCHANGING;
public
   { Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}



procedure TForm1.WMWindowPosChanging(var Message: TWMWindowPosChanging);
begin
  with Message.WindowPos^ do
  begin
    // Message.WindowPos^의 좌표를 이용해 폼이 데스크탑의 밖으로 나갈때
    // 가로채서 바탕화면의 가장자리에 붙여버린다.

    // 아래는 왼쪽 가장자리.. x : x 좌표 y : y 좌표, cx : 너비 cy :높이
    if X < 30 then x := 0;
    if Y < 30 then Y := 0;
    if X > Screen.Width - cx - 30 then X := Screen.Width - cx;
    if Y > Screen.Height - cy - 30 then Y := Screen.Height - cy;
  end;
end;

end.