[C#] 윈폼 컨트롤 박스 없이 마우스 드래그앤 드롭으로 이동.

원래 다른 분 블로그에 있었던 것인데, 퍼왔습니다. 출처를 표시해야 하는데, 프로젝트 코드에 넣은지 꽤 돼서 출처 찾기가 힘드네요. ㅠ 혹시 보시다가 본인이 쓴 글이라고 하시면 출처표시 해 드리겠습니다. 






일단 설명을 드리자면, 윈폼에서 최소화, 최대화, 닫기 및 상단의 텍스트 표시를 없애고 이미지만 나오게 윈폼을 개발하는 경우가 있지요. 사실 ControlBox 를 마우스로 드래그앤 드롭하면 움직이는데, 전체를 이미지로 덮어 버리는 경우에는 그런 부분을 만들어 줘야 합니다. 









public Point ptRect = new Point(0, 0);






private void panelKeypadMouseDown(object sender, MouseEventArgs e)


{


            ptRect.X = e.X;


            ptRect.Y = e.Y;


}












private void panelKeypadMouseMove(object sender, MouseEventArgs e)


{


            if (e.Button == MouseButtons.Left)


            {


                Point pt = new Point(this.Location.X + e.X – ptRect.X,this.Location.Y + e.Y – ptRect.Y);


                


                this.Location = pt;


            }


}





*C++ 에서의 구현(2011.07.21 Update)


*




void CLoginDlg::OnLButtonDown(UINT nFlags, CPoint point)

{ 

        PostMessage( WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM( point.x, point.y)); 

 

CDialogEx::OnLButtonDown(nFlags, point);

}

**


*

*다이얼로그의 OnLButtonDoown 에서 위의 PostMessage 부분 추가해 주면 됨. 생각보다 쉽게 구현됨.