|
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_NCLBUTTONDOWN, TMessage, WmNcButtonDown)
END_MESSAGE_MAP(TForm)
보시는봐와같이 변경 WMNcButtonDown 함수는따로 만들어서 연결시켜주시면됩니다
WMUser 와같은경우는
서브클래싱이 되어있다면
void __fastcall WmUser(TMessage *Message)
{
if(FNcButtonDown) <<---
FNcButtonDown(this,Message->wParamLo);
}
머이런식으로 되어잇어요
함수명을 바꾸고 내부에있는 함수는 메세지가 감지되면 실행될
함수라고보시면됩니다 본레 콤포넌트만든 클래스에사용되는건데
폼에서 실행시엔 실행될함수를 만들어서 넣어버리시면되겠지요
FNcButtonDown(this,Message->wParamLo);
이부분은 컴포넌트일경우구요
메인폼클래스에넣는다면 this 이것만빼면되요
빌더왕왕초보 님이 쓰신 글 :
: 답변 감사합니다..
: 그런데..Message-Map은 어떤식으로 작성을 해야 하나요?
:
: BEGIN_MESSAGE_MAP
: MESSAGE_HANDLER(WM_USER, TMessage, WmUser)
: END_MESSAGE_MAP(TForm)
: 이런식으로 했는데...솔직히 무슨말 인지는 잘 모르겠습니다.
: 왜 인자로 WM_USER이 있는지..아님 제가 하고자하는 윈도우 메세지(WM_LBUTTONDOWN )를
: 인자로 가지고 가야 하는지...
: 그리고 저기 있는 콜백함수가 (콜백함수가 맞는건지요...) 어떤식으로 호출되는지도
: 궁금합니다...
:
: 이부분을 공부하고 싶은데...어느쪽을 공부해야 하는지 몰라..이것저것 보다 보니 머리만 더 혼란스럽습니다.
: 강좌를 봐도 이부분은 너무 짧은듯한데...자세히 설명해주실수 있으신지요...
:
: 감사합니다..
:
:
: 장성호 님이 쓰신 글 :
: : Window의 Client영역에 Mouse_Down이벤트가 발생하면
: :
: : WM_LBUTTONDOWN 이나 WM_RBUTTONDOWN 메세지가 발생합니다.
: :
: : 하지만 Caption영역은
: :
: : 메세지에 NC라고 붙습니다.
: : WM_NCLBUTTONDOWN , WM_NCRBUTTONDOWN 등과 같이
: :
: : Non-Client영역의 메세지는
: : 기본적으로 On Mouse Down 같은 이벤트에서 받을수 있도록 되어있지 않습니다.
: :
: : sub-classing 이나 , message-map 을 작성하여
: : 이벤트를 받도록 만드시면 됩니다.
: :
: :
: : 그럼...
: :
: :
: : 빌더왕왕초보 님이 쓰신 글 :
: : : 고수님들에 조언을 듣고자 다시 글을올립니다.
: : : 다름이 아니라..
: : : Form에 이벤트중 "On Mouse Down" 이벤트가 폼의 캡션에서는 호출이 되질않아서
: : : 이렇게 글을 씁니다...
: : : 폼의 캡션을 클릭했거나....마우스가 다운을 했을시..이벤트를 어떻게 받아야하는거죠?
|