프로그래밍/델파이
WM_SYSCOMMAND로 NONCLIENT 영역의 마우스 동작 흉내내기
채윤아빠
2007. 12. 21. 23:21
WM_SYSCOMMAND 메시지로 윈도우 폼의 타이틀 바가 아닌 클라이언트 영역에서 마우스를 눌렀을 때, WM_MOUSEDOWN 메시지에서 WM_SYSCOMMAND의 WParam으로 $F012를 보내면, 폼을 이동시키는 효과를 그대로 낼 수 있습니다.
보통 SC_CLOSE 등 미리정의된 상수가 있지만, 아래 값들은 상수로 정의되어 있지 않아서 WParam으로 직접 넣어 주면 됩니다.
OnMouseDown 이벤트에서 보통
이렇게 처리를 하게 되는데, 이렇게 하면 팝업 관련 이벤트가 제대로 발생하지 않으므로, 아래와 같이 Button을 검사해서 처리하도록 하면 되겠습니다.
보통 SC_CLOSE 등 미리정의된 상수가 있지만, 아래 값들은 상수로 정의되어 있지 않아서 WParam으로 직접 넣어 주면 됩니다.
$F001 : 우측 고정 넓이 조절 $F002 : 좌측 고정 넓이 조절 $F003 : 하단 고정 높이 조절 $F004 : 우하단 고정 전체 크기 조절 $F005 : 좌하단 고정 전체 크기 조절 $F006 : 상단 고정 높이 조절 $F007 : 우상단 고정 전체 크기 조절 $F008 : 좌상단 고정 전체 크기 조절 $F009, $F012 : 이동
OnMouseDown 이벤트에서 보통
ReleaseCapture; Perform(WM_SYSCOMMAND, $F009, 0); // 윈도우 이동
이렇게 처리를 하게 되는데, 이렇게 하면 팝업 관련 이벤트가 제대로 발생하지 않으므로, 아래와 같이 Button을 검사해서 처리하도록 하면 되겠습니다.
if (Button = mbLeft) then begin ReleaseCapture; Perform(WM_SYSCOMMAND, $F009, 0); // 윈도우 이동 end;
728x90
반응형