끌고자 하는 컴포넌트의 MouseDown 이벤트에 아래 두줄의 코드를 넣어주면 됩니다.
폼 경우는 폼의 MouseDown 이벤트에 넣으면 됩니다.
void __fastcall TForm1::ImgGraphMouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
// 이 이벤트에서 하는 폼을 드래깅하기 위해
// 캡션바라고 속이는 두줄의 코드는 OS관계없이 다 먹는다. 실험은 안해봤으나 될 것임.
ReleaseCapture(); // OS의 연속 마우스 동작 체크을 그만두게 한다.
SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0); // OS에 난클라이언트 영역이라고 보낸다. 그러면 OS는 이 폼의 캡션인줄 안다.
}
캡션없는 폼을 끄는 여러가지 방법이 있지만 이 방법이 가장 간단하고 깔끔하며,
다른 마우스 동작의 이벤트를 방해하지 않기 때문에 사용하기 좋습니다.
그럼..
|
전 해당 컴포넌트에서 MouseDown,MouseMove,MouseUp 이렇게 세개의 이벤트를
이용해서 복잡하게 처리 했는데 쓸데없는 플래그도 써야 하고 귀찮았는데...
이렇게 간단? 한 방법이 있는줄은 몰랐네요..ㅠㅠ