1. 2010. 1. 20. 22:46 IDE & SDK/Delphi

아래 코드를 소스코드에 포함 시키고 이벤트를 잡아주세요.
닫기, 최소화, 최대화, 이전 크기 버튼등의 이벤트는
WM_SYSCOMMAND 메세지를 이용 해주세요.
Perform(WM_SYSCOMMAND,SC_MINIMIZE,0);
Perform(WM_SYSCOMMAND,SC_RESTORE,0);
Perform(WM_SYSCOMMAND,SC_MAXIMIZE,0);
...

TMainForm -> TFormName

procedure TMainForm.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture();
if(X>8) and (X<Self.Width-8) and (Y>3) and (Y<16) then
begin SendMessageW(Self.Handle,WM_NCLBUTTONDOWN,HTCAPTION,0);
end
else if(X>8) and (X<Self.Width-8) and (Y<4) then
begin SendMessageW(Self.Handle,WM_NCLBUTTONDOWN,HTTOP,0);
end
else if(X<8) and (Y<16) then
begin SendMessageW(Self.Handle,WM_NCLBUTTONDOWN,HTTOPLEFT,0);
end
else if(X>Self.Width-8) and (Y<16) then
begin SendMessageW(Self.Handle,WM_NCLBUTTONDOWN,HTTOPRIGHT,0);
end
else if(X<8) and (Y>16) and (Y<Self.Height-8) then
begin SendMessageW(Self.Handle,WM_NCLBUTTONDOWN,HTLEFT,0);
end
else if(X>Self.Width-8) and (Y>16) and (Y<Self.Height-8) then
begin SendMessageW(Self.Handle,WM_NCLBUTTONDOWN,HTRIGHT,0);
end
else if(X<8) and (Y>Self.Height-8) then
begin SendMessageW(Self.Handle,WM_NCLBUTTONDOWN,HTBOTTOMLEFT,0);
end
else if(X>Self.Width-8) and (Y>Self.Height-8) then
begin SendMessageW(Self.Handle,WM_NCLBUTTONDOWN,HTBOTTOMRIGHT,0);
end
else if (X>8) and (X<Self.Width-8) and (Y>Self.Height-8) then
begin SendMessageW(Self.Handle,WM_NCLBUTTONDOWN,HTBOTTOM,0);
end;
end;

procedure TMainForm.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if(X>8) and (X<Self.Width-8) and (Y>3) and (Y<16) then
begin Self.Cursor:=crDefault;
end
else if(X>8) and (X<Self.Width-8) and (Y<4) then
begin Self.Cursor:=crSizeNS;
end
else if(X<8) and (Y<16) then
begin Self.Cursor:=crSizeNWSE;
end
else if(X>Self.Width-8) and (Y<16) then
begin Self.Cursor:=crSizeNESW;
end
else if(X<8) and (Y>16) and (Y<Self.Height-8) then
begin Self.Cursor:=crSizeWE;
end
else if(X>Self.Width-8) and (Y>16) and (Y<Self.Height-8) then
begin Self.Cursor:=crSizeWE;
end
else if(X<8) and (Y>Self.Height-8) then
begin Self.Cursor:=crSizeNESW;
end
else if(X>Self.Width-8) and (Y>Self.Height-8) then
begin Self.Cursor:=crSizeNWSE;
end
else if (X>8) and (X<Self.Width-8) and (Y>Self.Height-8) then
begin Self.Cursor:=crSizeNS;
end;
end;

Posted by Nightly Luna
,
® © Tanny Tales
/ rss