2013/05/09

[VCPP] 타이틀 바 없는 윈도우 마우스로 이동하기

// Method #1
LRESULT CDialogClass::OnNcHitTest(CPoint point)
{
return HTCAPTION;
}

// Method #2
void CDialogClass::OnLButtonDown(UINT nFlags, CPoint point)
{
PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y));

CDialogEx::OnLButtonDown(nFlags, point);
}




타이틀 바가 없는 윈도우를 만들경우 별도의 작업 없이는 이 윈도우를 이동 할 수 없다.

기존 방법과 같이 마우스 드래그 만으로 윈도우를 이동하는 간단한 방법이 두 가지 있는데,



첫 번째는 WM_NCHITTEST 메세지 처리 핸들러에서 마우스 커서가 타이틀바에 있는 것처럼 처리(Method #1)하면 쉽게 윈도우를 이동할 수 있다. 하지만 이 방법에는 단점이 있다. 클라이언트 영역에서의 마우스 메세지 핸들링이 원활하지 않게 된다. 마우스 이벤트를 제대로 이용하려면 두 번째 방법을 이용해야 한다.



두 번째 방법은 마우스 왼쪽 버튼이 눌렸을 경우에 윈도우의 타이틀 바에서 왼쪽 버튼이 눌렸다는 메세지 강제로 보내는

Original Post : http://neodreamer-dev.tistory.com/708

No comments :

Post a Comment