2008/11/09

타이틀 바를 드래그 하는 효과내기 (캡션바 없이 폼 드래깅 하기)

프로그램을 만들다 보면 타이틀 바(캡션바)가 없는 프로그램을 만들어야 하는 경우가 있는데 이때 폼의 클라이언트의 특정 부분이나 폼위의 특정 컨트롤이 캡션바 역할을 해야할 때 사용할 수 있는 방법이다.

캡션바가 눌린 것으로 인식하게끔 프로그램에 Message를 보내는 방법

//OnMouseDown
ReleaseCapture();
Perform(WM_SYSCOMMAND, 0xF012, 0 );



//OnMouseDown
ReleaseCapture();
SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);




클라이언트에서 버튼이 눌러진 걸 탐지하여 캡션바에서 버튼이 눌러진 것 처럼 Message 바꿔치기 하기


class TForm1 : public TForm
{
...
private:
virtual void __fastcall WMNCHitTest(TWMNCHitTest &Message);

BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_NCHITTEST, TWMNCHitTest, WMNCHitTest)
END_MESSAGE_MAP(TForm)
};

void __fastcall TForm1::WMNCHitTest(TWMNCHitTest &Message)
{
TForm::Dispatch(&Message);
if(Message.Result == HTCLIENT)
Message.Result = HTCAPTION;
}

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

No comments :

Post a Comment