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

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



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




public Point ptRect = new Point(0, 0);
private void panel_Keypad_MouseDown(object sender, MouseEventArgs e)
{
            ptRect.X = e.X;
            ptRect.Y = e.Y;
}





private void panel_Keypad_MouseMove(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 부분 추가해 주면 됨. 생각보다 쉽게 구현됨. 

#c#  #dev  #winform  #안성현  #윈폼  #윈폼 이동  #최대화  #최소화  #컨트롤박스