WM_SYSCOMMAND 2

창 닫기(Alt + F4) 막기

폼에서 창 닫기를 강제로 막으려면, WM_SYSCOMMAND 메시지를 처리하면 됩니다. 다음과 같은 코드들을 추가합니다. TForm1 = class(TForm) private procedure WMSysCommand(var Msg:TMessage); message WM_SYSCOMMAND; // 생략 end; implementation // 생략 {** 창이 단축키로 닫히지 않도록 함 *} procedure TForm1.WMSysCommand(var Msg: TMessage); begin if (Msg.WParam=SC_CLOSE) then Msg.Result:=-1; end; 위와 같이 코드를 추가해 주면, 시스템 메뉴의 닫기나, X버튼 및 Alt+4로 창을 닫을 수 없게 됩니다.

WM_SYSCOMMAND로 NONCLIENT 영역의 마우스 동작 흉내내기

WM_SYSCOMMAND 메시지로 윈도우 폼의 타이틀 바가 아닌 클라이언트 영역에서 마우스를 눌렀을 때, WM_MOUSEDOWN 메시지에서 WM_SYSCOMMAND의 WParam으로 $F012를 보내면, 폼을 이동시키는 효과를 그대로 낼 수 있습니다. 보통 SC_CLOSE 등 미리정의된 상수가 있지만, 아래 값들은 상수로 정의되어 있지 않아서 WParam으로 직접 넣어 주면 됩니다. $F001 : 우측 고정 넓이 조절 $F002 : 좌측 고정 넓이 조절 $F003 : 하단 고정 높이 조절 $F004 : 우하단 고정 전체 크기 조절 $F005 : 좌하단 고정 전체 크기 조절 $F006 : 상단 고정 높이 조절 $F007 : 우상단 고정 전체 크기 조절 $F008 : 좌상단 고정 전체 크기 조절 $F009,..

728x90