private
Procedure NoResize(var Message:TWMNCHITTEST); Message WM_NCHITTEST;
..
{$R *.DFM}
Procedure NoResize(var Message:TWMNCHITTEST);
begin
if Message.Result=HTBOTTOM then Message.Result:=HTCLIENT;
end;
-> 안됩니다. 폼이 아예 움직이지도 않습니다. --; 커서도 안바뀌고..
유일하게 되는것은.. ALT-F4(종료)뿐. 어디서 틀렸나요?
중요한걸 하나 빠트리셨네요. WM_NCHITTEST의 메세지에서 var파라매터로 들어오는
레코드의 Result값을 알려면 상속된 버전의 메소드를 먼저 호출해야 합니다.
아래와 같이하시면 커서가 경계선에 있더라도 변하지 않습니다. 그러므로 크기 조절이
않되죠.
하지만 이렇게 해도 최대/최소는 됩니다. 필요하다면 그것도 처리해 주세요.
procedure TForm1.NoResize(var Message: TWMNCHITTEST);
begin
Inherited; // 상속된 메세지핸들러를 호출 <***** 중요
if Message.Result in [HTLEFT..HTBOTTOMRIGHT] then // 만일 경계선에 있다면
// 크기조절커서로 바꾸지 않는다. 이건 HTCLIENT로 해도 됩니다.
Message.Result := HTNOWHERE;
end;
^^ 항상 즐코하세요.
Mr.Q wrote:
> private
> Procedure NoResize(var Message:TWMNCHITTEST); Message WM_NCHITTEST;
>
> ..
>
> {$R *.DFM}
>
> Procedure NoResize(var Message:TWMNCHITTEST);
> begin
> if Message.Result=HTBOTTOM then Message.Result:=HTCLIENT;
> end;
>
> -> 안됩니다. 폼이 아예 움직이지도 않습니다. --; 커서도 안바뀌고..
> 유일하게 되는것은.. ALT-F4(종료)뿐. 어디서 틀렸나요?