Q&A

  • : 폼상에 배치한 판넬을 눌러서 화면을 움직이려면..
안녕하세요..



폼상에 판넬을 두고 그 위에 버튼을 두었읍니다.

폼의 클라이언트 영역을 눌러서 화면을 이리저리 이동시키는 루틴은 책을 보구

해보니 잘되더군요. 그래서 이번에는 클라이언트 영역의 일부에 Tpanel 을 하나

놓고 그 위에 종료 버튼을 만들었읍니다. 그리고는 panel 을 눌러서 화면을

움직이려니까 안되네요. 어떻게 하면 이 판넬을 눌러서 폼의 캡션영역을 마우스로 누른 것과 같은 효과가 나타나게 할수 있을까요. 결과적으로는 panel 영역에서

WMNCCHitTest 라는 메시지 이벤트를 발생시킬때, 그 발생값은 htcaption 이되게 하려는 건데요. 어떻게 코딩을 해야하나요.



참고로, 아래는 제가 테스트 하려는 부분입니다.

판넬을 누르면 아래의 부분이 기동하게 하려는 거거든요...

고수님의 조언을 부탁 드립니다.

이걸 참조 한거구요...



LRESULT SendMessage(

HWND hWnd, // handle of destination window

UINT Msg, // message to send

WPARAM wParam, // first message parameter

LPARAM lParam // second message parameter

);



wParam , lParam 에 값 실어서 보내면 된다고하는데...

SendMessage(Form1.Handle, WM_NCHITTEST, 0, 0);

= =

1) 2)

판넬을 누르를때 1),2)에 인수를 어떻게 넣어야 하는지를 몰라서요...





//---------------------------------------------------------------

procedure WMNCHitTest(var M: TWMNCHitTest); message WM_NCHITTEST;



procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);

begin

inherited;



if M.Result =htclient then

M.result := htcaption;

end;





1  COMMENTS
  • Profile
    류종택 2001.04.01 05:02
    판넬의 MouseDown 이벤트에서 아래와 같이 하세요..



    procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;

    Shift: TShiftState; X, Y: Integer);

    begin

    ReleaseCapture;

    SendMessage(Handle, WM_SYSCOMMAND, $F012, 0);

    end;





    From 류..



    델초보 wrote:

    > 안녕하세요..

    >

    > 폼상에 판넬을 두고 그 위에 버튼을 두었읍니다.

    > 폼의 클라이언트 영역을 눌러서 화면을 이리저리 이동시키는 루틴은 책을 보구

    > 해보니 잘되더군요. 그래서 이번에는 클라이언트 영역의 일부에 Tpanel 을 하나

    > 놓고 그 위에 종료 버튼을 만들었읍니다. 그리고는 panel 을 눌러서 화면을

    > 움직이려니까 안되네요. 어떻게 하면 이 판넬을 눌러서 폼의 캡션영역을 마우스로 누른 것과 같은 효과가 나타나게 할수 있을까요. 결과적으로는 panel 영역에서

    > WMNCCHitTest 라는 메시지 이벤트를 발생시킬때, 그 발생값은 htcaption 이되게 하려는 건데요. 어떻게 코딩을 해야하나요.

    >

    > 참고로, 아래는 제가 테스트 하려는 부분입니다.

    > 판넬을 누르면 아래의 부분이 기동하게 하려는 거거든요...

    > 고수님의 조언을 부탁 드립니다.

    > 이걸 참조 한거구요...

    >

    > LRESULT SendMessage(

    > HWND hWnd, // handle of destination window

    > UINT Msg, // message to send

    > WPARAM wParam, // first message parameter

    > LPARAM lParam // second message parameter

    > );

    >

    > wParam , lParam 에 값 실어서 보내면 된다고하는데...

    > SendMessage(Form1.Handle, WM_NCHITTEST, 0, 0);

    > = =

    > 1) 2)

    > 판넬을 누르를때 1),2)에 인수를 어떻게 넣어야 하는지를 몰라서요...

    >

    >

    > //---------------------------------------------------------------

    > procedure WMNCHitTest(var M: TWMNCHitTest); message WM_NCHITTEST;

    >

    > procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);

    > begin

    > inherited;

    >

    > if M.Result =htclient then

    > M.result := htcaption;

    > end;

    >

    >